visual NANT为C++项目修改程序集版本
visual NANT modify assembly version for C++ project
下面是我的NANT脚本片段,这些脚本从我的一个C#项目中读取Assemblyversion并自动增加它。
<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)>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是否有任何功能/标签可以帮助改变这一点吗?如果没有,你知道我该怎么做吗?我已经考虑过读取文件内容并使用regex来完成此操作。
我知道这是一个很老的问题,但我今天一直在处理同样的问题。我用ANT解决了这个问题(请原谅我的正则表达式:/)。我假设Nant将以与普通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=""(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}"" />
<substitution expression=""${adapter_versions}"" />
<fileset dir="${my.dir}">
<include name="VersionResource.rc" />
</fileset>
</replaceregexp>
${adapter_versions}是在调用生成过程时在命令行上设置的。
相关文章:
- 内联程序集printf将整数解释为地址
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 具有外部"c"和程序集的未定义函数
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- 不同于按值传递和常量引用传递的程序集
- 修改程序的入口点时未调用全局变量的构造函数
- 为什么在堆栈和堆上创建变量会产生相同的程序集代码?
- C++变量在调用 x64 程序集函数后重置为 0
- 如何将C++子例程链接到 x86 程序集程序?
- Qt 网页程序集缓存
- 测试操作系统时执行程序集"sti"时虚拟框崩溃
- 为什么从 constexpr 引用生成的程序集代码与从 constexpr 指针生成的程序集代码不同?
- 将内联程序集尾调用函数尾声替换为用于x86/x64 msvc的Intrinsics
- 解析 C# 中的C++程序集
- 是否可以修改并排程序集搜索序列
- 如何在C++中内联自修改程序集代码
- visual NANT为C++项目修改程序集版本
- 在链接之前修改visual studio生成的程序集