寻找允许我们自动化NuGet包部署过程的解决方案。目前" Pack"选项只是构建包,但其他一切都需要手动完成。我希望将这些步骤内置到这个新的" Pack and Deploy"任务:
也许有人已经这样做并且可以分享经验?
经过更多研究后发现如何在包装后推送:Automating Nuget Package Push With .NetCore RC2
答案 0 :(得分:3)
- 增量包版本 - 与“npm版本补丁”类似的东西
醇>
在回答此问题之前,我们需要了解有关AssemblyVersion
,AssemblyInformationalVersion
和NuGet版本的一些信息,请查看this thread以获取详细信息。那你就会知道:
Nuget不会在AssemblyVersion
文件中使用AssemblyFileVersion
或AssemblyInfo.cs
。它使用第三个版本控制属性:AssemblyInformationalVersion
。
Nuget实际上将该字符串中的任何内容应用为包版本。因此,要增加包版本,我们需要在AssemblyInfo.cs
:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("2.0.0")]
因此,当我们需要发布新版本的软件包时,我们只需更新AssemblyInformationalVersion
文件中AssemblyInfo.cs
的值。
- 构建包
醇>
此问题的答案取决于项目的样式,旧项目样式或新项目样式(VS2017-SDK)。
来源Old csproj to new csproj: Visual Studio 2017 upgrade guide
当你进入旧式项目时:
您可以通过构建后事件自动打包nuget包:
$(PathOfYourNuGet)\nuget.exe pack "$(ProjectPath)"
使用此构建事件,MSBuild将在您构建项目时自动创建nuget包。
当您进入新风格项目时
在新款式项目中,packagin nuget包变得非常容易。只需选中项目属性的包标签上的复选框Generate NuGet packafe on build
:
注意:当您处于新样式项目中时,可以在包选项卡上的包版本中增加包版本。
- 将刚创建的包推送到NuGet存储库
醇>
正如您所发现的,在自动发布nuget包后,您可以添加自定义目标来推送它:
<Target Name="PushNuGetPackage" AfterTargets="GenerateNuspec">
<Message Text="Push NuGet Package to NuGet Feed" Importance="high"></Message>
<Exec Command="$(PathOfYourNuGet)\nuget.exe push $(TargetDir)\xxx.1.0.0.nupkg -Source NuGetrepository"></Exec>
</Target>
来源Automatic NugetPackage upload to Nuget feed
注意:您不能将具有相同名称和相同版本的nuget包推送到nuget.org。