我正在改变我的一个项目,它基于.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
答案 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文件格式。这可能就是现在这么容易的原因。