Visual NANT изменить версию сборки для проекта C ++

Ниже приведен фрагмент моих сценариев NANT, которые читают Assemblyversion из одного из моих проектов на C # и автоматически увеличивают его.

<target name="CheckAssembly">
<echo message="Check Assembly File version..." />
<property name="file.contents" value="" />
<loadfile property="file.contents" file="${properties.path}\AssemblyInfo.cs" />
<regex pattern="(AssemblyVersionAttribute|AssemblyVersion)\(\x22(?'major'\d+).(?'minor'\d+).(?'build'\d+).(?'revision'\d+)\x22\)" input="${file.contents}" />
<property name="application.AssemblyInfo.dir" value="${properties.path}" />
<property name="AssemblyVersion" value="${major}.${minor}.${build}.${int::parse(revision)}" />

<if test="${int::parse(updates.count)&gt;1}">
<property name="AssemblyVersion" value="${major}.${minor}.${build}.${int::parse(revision) +1}" />
<call target="UpdateAssembly" />
</if>

</target>

<target name="UpdateAssembly" description="generates the version number">
<echo message="Setting the build version to ${AssemblyVersion}..." />
<attrib file="${application.AssemblyInfo.dir}\AssemblyInfo.cs" readonly="false" />
<asminfo output="${application.AssemblyInfo.dir}\AssemblyInfo.cs" language="CSharp">
<imports>
<import namespace="System.Runtime.CompilerServices" />
<import namespace="System.Reflection" />
<import namespace="System.Runtime.InteropServices" />
</imports>
<attributes>
<attribute type="AssemblyTitleAttribute" value="${appName}" />
<attribute type="AssemblyDescriptionAttribute" value="" />
<attribute type="AssemblyConfigurationAttribute" value="" />
<attribute type="AssemblyCompanyAttribute" value="Company Name" />
<attribute type="AssemblyProductAttribute" value="" />
<attribute type="AssemblyCopyrightAttribute" value="Copyright ©  2010-2013" />
<attribute type="AssemblyTrademarkAttribute" value="" />
<attribute type="AssemblyCultureAttribute" value="" />
<attribute type="AssemblyVersionAttribute" value="${AssemblyVersion}" />
<attribute type="AssemblyFileVersionAttribute" value="${AssemblyVersion}" />
</attributes>
</asminfo>
<attrib file="${application.AssemblyInfo.dir}\AssemblyInfo.cs" readonly="true" />
</target>

Теперь я стою перед своим следующим вызовом. У меня есть проект C ++, который прекрасно компилируется с использованием NANT, но я хочу обновить версию сборки, аналогичную той, что вы видите выше. В этом проекте C ++ мой ProductVersion сохранен в файле ресурсов (.rc).

Знаете ли вы, есть ли в NANT какие-либо функции / теги, которые помогают изменить это? Если нет, ты не представляешь, как мне к этому подойти? Я уже думал о том, чтобы прочитать содержимое файла и использовать регулярные выражения для этого.

1

Решение

Я знаю, что это действительно старый вопрос, но я работал над той же проблемой сегодня. Я решил это так, используя ANT (пожалуйста, извините мое регулярное выражение: /). Я предполагаю, что Нант будет функционировать очень похоже на обычный ANT.

<echo message="Modifying VersionResource.rc" />
<replaceregexp byline="true" flags="g" encoding="UTF-16LE" >
<regexp pattern="[0-9]+,[0-9]+,[0-9]+,[0-9]+" />
<substitution expression="${adapter_resource}" />
<fileset dir="${my.dir}">
<include name="VersionResource.rc" />
</fileset>
</replaceregexp>

<echo message="Modifying VersionResource.rc again..." />
<replaceregexp byline="true" flags="g" encoding="UTF-16LE" >
<regexp pattern="&quot;(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}&quot;" />
<substitution expression="&quot;${adapter_versions}&quot;" />
<fileset dir="${my.dir}">
<include name="VersionResource.rc" />
</fileset>
</replaceregexp>

$ {adapter_versions} устанавливается в командной строке при вызове процесса сборки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]