nuget - 如何在最新的.NET Core工具中实现版本自动递增?

标签 nuget .net-core versioning csproj

我正在使用最新的(截至今天).NET Core 工具。在那里,您可以在 MSBuild 属性中指定版本。但是,与 [ assembly:AssemblyVersion] 不同,这似乎不支持通配符。如何以同样的方式自动增加版本?

解释为什么这是一个坏主意,以及应该做什么也将是一个很好的答案。

最佳答案

MSBuild 中的 Version 属性不像 project.json 那样支持星号(通配符)格式。

但是,使用 MSBuild,您可以通过其他方式计算版本。没有一种正确的方法可以做到这一点,但这里有一种方法。我们使用“VersionPrefix”代替。 Microsoft.NET.Sdk还会自动组合VersionPrefix和VersionSuffix,形成“Version”的最终值。

在文件中:

<PropertyGroup>
  <VersionPrefix>2.0.0</VersionPrefix>
</PropertyGroup>

在构建服务器上:

msbuild.exe /t:Pack /p:VersionSuffix=build00123 

// or, the dotnet.exe equivalent
dotnet pack --version-suffix build00123

结果:

AssemblyVersion = 2.0.0.0
Package version = 2.0.0-build00123

我们的构建服务器会在每次运行时生成构建号。

如果您想使用老式的 AssemblyVersion 星号形式,您可以显式设置 <AssemblyVersion> MSBuild 中的属性。如果不是,则默认为 Major.minor.patch 值 <Version> .

更多详细信息:

Microsoft.NET.Sdk 中有六种“版本”设置。请参阅What is the difference between various MSBuild version properties, such as Version, VersionPrefix, and VersionSuffix?了解更多详情。

关于nuget - 如何在最新的.NET Core工具中实现版本自动递增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42180137/

相关文章:

c# - 无法加载文件或程序集 'RestSharp,版本 = 105.2.3.0

c# - EF 关系 - 由于 list<guid> 是原始的而无法映射

ruby-on-rails - 为下一个 API 版本使用不同的 gem 的版本控制

php - MySQL表的基本版本控制

azure - 使用serviceBus时Nuget将Azure webjobs SDK 2.3升级到3.0

f# - 在 Mono 下 fsharp 编译失败并出现 NuGet 错误

c# - 为客户将目标打包到 nuget 中

angular - 使用 ngserve 和 dotnet core Angular 启动 Angular

c# - 使用 .net core 和 mongodb 了解性能

grails - Grails包装器:在更改版本之前或之后运行/重新运行?