gpt4 book ai didi

msbuild - 在 MSBuild 中将程序集版本号指定为命令行参数

转载 作者:行者123 更新时间:2023-12-02 06:30:49 31 4
gpt4 key购买 nike

我希望能够指定在构建期间生成的所有程序集的版本号作为 MSBuild 命令参数,如下所示:

MSBuild.exe /p:version=5.4.3.0 

我已经查看了AssemblyInfoTask,但在我看来,在这种情况下它并不是一个好的解决方案。

最佳答案

对于使用 dotnet.exe 构建的 SDK 样式项目,程序集版本属性为 generated automatically ,因此您可以立即使用 /p:Version=5.4.3.0

如果您使用旧的项目格式,则需要将以下 BeforeBuild 步骤添加到 .csproj 文件中。 无需使用额外的.targets和扩展包,因为MSBuild已经有一个不错的built-in task它完成了大部分工作:

<Target Name="BeforeBuild">
<ItemGroup>
<AssemblyAttributes Include="AssemblyVersion">
<_Parameter1>$(Version)</_Parameter1>
</AssemblyAttributes>
</ItemGroup>
<MakeDir Directories="$(IntermediateOutputPath)" />
<WriteCodeFragment Language="C#"
OutputFile="$(IntermediateOutputPath)Version.cs"
AssemblyAttributes="@(AssemblyAttributes)" />
<ItemGroup>
<Compile Include="$(IntermediateOutputPath)Version.cs" />
</ItemGroup>
</Target>

只需确保删除现有的 AssemblyVersion 属性,因为它现在将在构建过程中生成。

2020 年 7 月 29 日更新: Michael Parker指出,如果您使用此方法并从 Visual Studio 进行构建,您最终会在 Version.cs 文件中得到一个空版本。为了克服这个问题,我建议在 .csprojDirectory.Build.props 文件中定义默认版本值,如下所示:

<PropertyGroup>
...
<Version Condition="'$(Version)' == ''">1.0.0.0</Version>
</PropertyGroup>

如果未在命令行中指定版本,这会将其设置为 1.0.0.0

关于msbuild - 在 MSBuild 中将程序集版本号指定为命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8446693/

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