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