从.NET Standard项目构建Nuget包时覆盖包版本?

时间:2017-04-09 18:20:24

标签: nuget .net-standard

我正在改变我的一个项目,它基于.NET标准而不是可移植框架的奇怪组合。

除了当我构建发布二进制文件以及.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

1 个答案:

答案 0 :(得分:0)

好的,事实证明这很容易。我发现了几个关于如何破解各种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 Standard项目,因此.csproj文件看起来像.nuspec文件,而不是传统的.csproj文件格式。这可能就是现在这么容易的原因。