我有一个 .NET 5.0 控制台应用程序。如何创建版本资源,然后在我的应用程序中显示该版本?
过去,我见过一个AssemblyInfo.cs文件。但我在我的新项目中没有看到类似的东西。
最近我要解决这个问题:如何知道部署了哪个版本的工具?如何自动化版本号,以免意外使用旧版本?
过去,该信息作为属性存储在 AssemblyInfo.cs 中。在 .NET Core 中,这些属性现在由项目属性在运行时生成。
Andrew Lock解释了如何使用Version
、VersionPrefix
、VersionSuffix
、 、AssemblyVersion
FileVersion
、等各种属性。PackageVersion
InformationalVersion
最重要的是Version
、VersionPrefix
和VersionSuffix
。这是因为Version
被用作其他的默认值。Version
反过来可以VersionPrefix-VersionSuffix
像没有明确的值一样进行计算。
引用文章:
该
Version
属性是构建 .NET Core 应用程序时最常设置的值。它控制构建输出中嵌入的所有版本号的默认值,例如,PackageVersion
因此AssemblyVersion
它通常用作应用程序/库版本的单一来源。
如果使用System.Commandline,则显示的版本信息--version
默认InformationalVersion
来自Version
。
默认VersionPrefix
为1.0.0
且默认后缀为空,结果为 version 1.0.0
。
*公式
好处是属性可以有公式。我只需将其添加到csproj
不包含其他版本信息的版本号即可自动生成与日期相关的版本号
<VersionSuffix>$([System.DateTime]::UtcNow.ToString(`yyyyMMdd-HHmm`))</VersionSuffix>
Run Code Online (Sandbox Code Playgroud)
现在每次我构建工具时我都会得到类似的版本1.0.0-2021061501836
覆盖属性
可以在构建期间通过指定显式版本后缀或为项目属性指定显式值来覆盖项目值,例如:
dotnet build --configuration Release --version-suffix preview2-final
Run Code Online (Sandbox Code Playgroud)
或者
dotnet build --configuration Release /p:Version=1.2.3-preview2-final
Run Code Online (Sandbox Code Playgroud)
这样,自动发布管道可以指定一个新版本来覆盖项目文件中设置的任何内容
归档时间: |
|
查看次数: |
2577 次 |
最近记录: |