2017-04-09 60 views
0

我正在改变一个基于.NET标准的项目,而不是可移植框架的奇怪组合。从.NET标准项目构建Nuget包时覆盖包版本?

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

回答

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标准项目,因此.csproj文件看起来像.nuspec文件而不是传统的.csproj文件格式。这可能是为什么现在这么容易。

相关问题