我可以在构建之前在 Visual Studio proj 文件中自动设置 AssemblyVersion 吗?

Can I automatically set the AssemblyVersion in a Visual Studio proj file prior to a build?

我能否在构建之前 Visual Studio 编写一个脚本来读取文本文件并将值写入我的应用程序的 proj 文件?

特别是在构建之前,我想从我的解决方案中的一个简单文本文件中读取一个值,并将其写入 .csproj 文件夹中的 AssemblyVersion。 1.0.2.0

可以通过 ReadLinesFromFile 内置任务从文件中读取版本。


.NET Framework:

获得版本后,需要将其传递给自定义目标:

<Target Name="EntryVersion" BeforeTargets="Build">

    <Message Text="-----Entry-----" Importance="high"/>
    <Message Text=" Write Version " Importance="high"/>
    <Message Text="-----Entry-----" Importance="high"/>

    <ItemGroup>
        <Assembly Include="AssemblyProduct"><_Parameter1>$(Product)</_Parameter1></Assembly>
        <Assembly Include="AssemblyCompany"><_Parameter1>$(Company)</_Parameter1></Assembly>
        <Assembly Include="AssemblyVersion"><_Parameter1>$(Version)</_Parameter1></Assembly>
    </ItemGroup>

    <WriteCodeFragment AssemblyAttributes="@(Assembly)" Language="C#" OutputFile="..\GlobalAssemblyInfo.cs"/>
</Target>

此代码段生成将包含程序集属性的源文件。此外,输出文件必须作为 link 包含在项目中,必须从 AssemblyInfo.

中删除使用的属性

.NET 核心 |标准:

可以使用 MSBuild CLI 中的原生 属性 Version 或从自定义目标中覆盖它。该值将自动添加到程序集属性中。


如果您使用 Microsoft.Extensions.PlatformAbstractions 中的 ApplicationVersion,请参阅 Issue 237


ReadLinesFromFile | 写代码片段 | 执行