Dot Net 6.0 程序集版本号如何根据编译次数自动设置?

为了解决这个问题,百度,google了大半天找到:

Auto Versioning in Visual Studio 2017 (.NET Core)

参考了里面的一些解决方案,自己做了个实现:

1.编写AutoVersioningTask.targets文件保存到项目目录中,内容如下

<Project>

<UsingTask TaskName="WriteAllTextToFile" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">

<ParameterGroup>

<FileName ParameterType="System.String" Required="true" />

<Text ParameterType="System.String" Required="true" />

</ParameterGroup>

<Task>

<Using Namespace="System" />

<Using Namespace="System.IO" />

<Code Type="Fragment" Language="cs">

<![CDATA[

                File.WriteAllText(FileName,Text);

            ]]>

</Code>

</Task>

</UsingTask>

<Choose>

<When Condition="Exists('$(MSBuildProjectDirectory)\ver.txt') And Exists('$(MSBuildProjectDirectory)\bn.txt')">

<PropertyGroup>

<_VersionDefine>$([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)\ver.txt"))</_VersionDefine>

<_OldBuildNumber>$([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)\bn.txt"))</_OldBuildNumber>

<_NewBuildNumber>$([MSBuild]::Add($(_OldBuildNumber),1))</_NewBuildNumber>

<FileVersion>$(_VersionDefine).$(_OldBuildNumber)</FileVersion>

<Version>$(_VersionDefine)</Version>

</PropertyGroup>

</When>

<When  Condition="!Exists('$(MSBuildProjectDirectory)\ver.txt') Or !Exists('$(MSBuildProjectDirectory)\bn.txt')">

<PropertyGroup>

<_VersionDefine>1.0.0</_VersionDefine>

<_OldBuildNumber>0</_OldBuildNumber>

<_NewBuildNumber>$([MSBuild]::Add($(_OldBuildNumber),1))</_NewBuildNumber>

<FileVersion>$(_VersionDefine).$(_OldBuildNumber)</FileVersion>

<Version>$(_VersionDefine)</Version>

</PropertyGroup>

</When>

</Choose>

<Target Name="_SaveBuildNumber" AfterTargets="Publish">

<WriteAllTextToFile FileName="$(MSBuildProjectDirectory)\ver.txt" Text="$(_VersionDefine)"/>

<WriteAllTextToFile FileName="$(MSBuildProjectDirectory)\bn.txt" Text="$(_NewBuildNumber)"/>

</Target>

</Project>

此文件的功能为:

1).从项目文件夹中加载bn.txt,里面保存了编译次数,bn.txt内容如下:

0

2).从项目文件加载ver.txt,里面保存了程序集版本号,ver.txt内容如下:

1.0.0

3).如果文件这两个文件有一个不存在,则在发布程序集后自动创建并初始化

4).文件版本号会拼接:程序集版本号和编译次数,作为文件版本号,程序集版本号则直接使用

5).在发布完成后,编译次数会自动+1并保存回bn.txt

2.在项目文件中导入AutoVersioningTask.targets,项目文件中加入下面内容:

<Import Project="AutoVersioningTask.targets" />

3.至此程序集每发布一次,文件版本号自动+1

4.设置版本号只需要改ver.txt的内容即可,文件版本号,程序集版本号会自动根据ver.txt的内容设置

5.编译次数也可以通过修改bn.txt修改,一般让其自动维护即可

最后可用于生产的成品 Nuget包 :

Tnelab.AutoVersioningTask

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容