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

时间:2018-08-22 16:32:07

标签: visual-studio msbuild versioning

在构建之前,我可以编写一个脚本来读取文本文件并将值写入我的应用程序的proj文件中吗?

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

1 个答案:

答案 0 :(得分:1)

可以通过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>

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


.NET Core |标准

可以使用Version中的本机属性MSBuild CLI或从自定义目标中覆盖它。该值将自动添加到装配体属性中。


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


ReadLinesFromFile | WriteCodeFragment | Exec