适用于.NET 5、.NET 6的程序集版本的经典或自定义内部版本和版本号

您所在的位置:网站首页 文件版本的定义 适用于.NET 5、.NET 6的程序集版本的经典或自定义内部版本和版本号

适用于.NET 5、.NET 6的程序集版本的经典或自定义内部版本和版本号

2023-08-28 22:16| 来源: 网络整理| 查看: 265

目录

介绍

在.NET Framework 5中创建自动生成和版本号

选项

问题

介绍

.NET 5和.NET 6没有默认的生成和版本号选项,如.NET Framework中所示。

版本号存在于 AssemblyInfo.cs 文件中的“属性”目录中,如下所示:

// You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.*")] //[assembly: AssemblyFileVersion("1.0.0.0")] // when commented out it uses the assembly version

这会将星号替换为内部版本号和修订号;结果类似于1.0.8306.30708,其中最后两个数字是:

内部版本号,等于自当地时间2000年1月1日以来的天数,以及修订号等于自当地时间午夜以来的秒数(不考虑夏令时的时区调整),除以2

这转换成2022年9月28日17:03编译的软件。

程序集文件中经典生成和修订代码的完整说明可以在 Microsoft的页面上找到。

在.NET Framework 5中创建自动生成和版本号

诀窍是使用MSBuild内联任务来设置生成和版本号。更多信息可以在Micosofts的页面上找到。

需要执行以下步骤:

要添加AssemblyVersion,必须将其添加到PropertyGroup中。必须设置事件BeforeBuild。必须使用标准C#代码创建UsingTask。

代码如下所示:

// add the property "AssemblyVersion" to the propertyGroup: 1.0.0.0 // more properties here..... // add the pre-build event, named BeforeBuild in .NET Core: // and the task creating the AssemblyVersion

选项

此示例将创建一个经典版本号,但使用C#代码创建生成和版本(实际上是整个程序集版本号)的选项提供了创建所需任何格式的选项。

问题

虽然这适用于编译和运行软件,但它不适用于编译的软件,其中应用程序打包到一个包含所有依赖项的文件中。

以下示例将失败:

dotnet publish $(SolutionDir)MyProject\MyProject.csproj -p:PublishProfile=FolderProfile -r:win10-x64 -p:PublishSingleFile=true -p:PublishReadyToRun=false -p:PublishTrimmed=false -c:Release -o:$(TargetDir)published

这将导致以下错误:

任务工厂“CodeTaskFactory”在MSBuild的.NET Core版本上不受支持。

和:

无法从程序集“C:\Program Files\dotnet\sdk\6.0.400\Microsoft.Build.Tasks.Core.dll”加载任务工厂“CodeTaskFactory”。任务工厂必须返回“任务类型”属性的值。

由于这些问题对我并不重要,我没有进一步调查它们。

https://www.codeproject.com/Tips/5343784/Classic-or-Custom-Build-and-Version-Numbers-for-As



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3