从 .NET 标准项目生成 Nuget 包时重写包版本?



我正在将我的一个项目更改为基于.NET Standard,而不是可移植框架的奇怪组合。

一切似乎都井井有条,除了当我构建发布二进制文件和 .nupkg 包时,版本当然是 .csproj 文件中指定的版本。

有没有办法在命令行上使用msbuild或从批处理文件重写此属性?

基本上,如果我想构建版本 2.3.4.5,我可以使用 msbuild 或环境变量(除了修改项目文件之外的任何内容)使 nuget 包的最终版本成为版本 2.3.4.5 吗?

以前我有一个 FinalBuilder 项目,我试图摆脱它,它操作了AssemblyInfo.cs文件,但这很容易出错,因为至少有两次我设法将修改后的文件提交到我的存储库中。我会对在构建过程中注入版本的解决方案更满意。

这是我当前的 msbuild 命令行:

msbuild DiffLib.sln /target:Clean,Rebuild /p:Configuration=Release

好的,所以事实证明这很容易。我发现了几个关于如何破解各种msbuild文件以获取要在属性中使用的变量的问题,但事实证明我所需要的只是这个:

msbuild DiffLib.sln /target:Clean,Rebuild /p:Configuration=Release /p:Version=2.3.4.5
^----------------^

最终的 nuget 包因此被命名为

DiffLib.2.3.4.5.nupkg

里面的DLL也有正确的版本。

请注意,这是一个 .NET 标准项目,因此 .csproj 文件看起来像一个 .nuspec 文件,而不是传统的 .csproj 文件格式。这可能就是为什么现在如此容易的原因。

最新更新