gpt4 book ai didi

c# - 在构建后事件期间确定程序集版本

转载 作者:IT王子 更新时间:2023-10-29 03:48:47 25 4
gpt4 key购买 nike

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

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

call foo.bat $(AssemblyVersion)

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

有没有办法实现我错过的这个?

最佳答案

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

@(Targets->'%(Version)')

@(VersionNumber)

要完成此操作,请卸载您的项目。如果项目某处定义了 属性,请将其从项目中剪切并暂时保存在其他地方(记事本?)。然后在项目的最后,就在结束标记之前,放置:

<Target Name="PostBuildMacros">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="Targets" />
</GetAssemblyIdentity>
<ItemGroup>
<VersionNumber Include="@(Targets->'%(Version)')"/>
</ItemGroup>
</Target>
<PropertyGroup>
<PostBuildEventDependsOn>
$(PostBuildEventDependsOn);
PostBuildMacros;
</PostBuildEventDependsOn>
<PostBuildEvent>echo HELLO, THE ASSEMBLY VERSION IS: @(VersionNumber)</PostBuildEvent>
</PropertyGroup>

此代码段中已有一个示例 。不用担心,您可以在重新加载项目后将其重置为真正的构建后事件。

现在正如 promise 的那样,程序集版本可用于使用此宏的后期构建事件:

@(VersionNumber)

完成!

关于c# - 在构建后事件期间确定程序集版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com