在生成后事件期间确定程序集版本

假设我想创建一个静态文本文件,它随每个版本一起发布。我希望用发行版的版本号更新文件(如AssemblyInfo.cs中所指定),但我不想手动执行此操作

我希望可以使用生成后事件,并将版本号提供给如下批处理文件:

调用foo.bat$(汇编版本)

但是,我找不到任何合适的变量或宏来使用

有没有我错过的方法来实现这一点

如果(1)您不想下载或创建检索程序集版本的自定义可执行文件,(2)您不介意编辑Visual Studio项目文件,则有一个简单的解决方案,允许您使用如下所示的宏:

@(目标->’%(版本)

@(版本号)

要完成此任务,请卸载您的项目。如果项目某处定义了一个<PostBuildEvent>属性,将其从项目中剪切并临时保存到其他位置(记事本?)。然后在项目的最后,在结束标记之前,放置以下内容:

<Target Name=“PostBuildMacros”>
<GetAssemblyIdentity AssemblyFiles=“$(TargetPath)”>
<输出TaskParameter=“Assemblies”ItemName=“Targets”/>
&lt/GetAssemblyIdentity>
<项目组>
<VersionNumber Include=“@(目标->”%(版本)”/>
&lt/项目组>
&lt/目标>
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
构建后宏;
&lt/PostBuildEventDependsOn>
<PostBuildEvent>echo HELLO,程序集版本为:@(VersionNumber)&lt/PostBuildEvent>
&lt/PropertyGroup>

此代码段有一个示例<PostBuildEvent>已经在里面了。不用担心,您可以在重新加载项目后将其重置为真正的生成后事件

现在,正如承诺的那样,程序集版本可用于具有以下宏的生成后事件:

@(版本号)

完成了

发表评论