Visual Studio 2017中的新功能是能够在构建时为某些目标类型生成NuGet包(即,我正在使用的.NET Standard 2.0
)。
这很好用,.nupkg
文件是在成功构建时生成的。
但是,我无法弄清楚如何将构建的软件包自动发布到我们的本地存储库。
我已经尝试了以下的构建后事件:
nuget push -Source https://my.nuget.server/nuget/ "C:\Source\MyProject\bin\Release\MyProject.1.0.0.nupkg"
但这提出了两个问题:
nuget push $(NugetPackage)
。我也无法找出能够有效地获得包名称的宏/变量的组合。Microsoft提供了这种kick-ass自动NuGet打包,但无法将其推送到本地存储库(或者看起来如此)!
有没有人让这个工作?我错过了什么吗?有解决方法吗?这件事正在进行吗?
答案 0 :(得分:6)
您可以直接将以下行添加到库 csproj ,从而将发布自动化为nuget。您需要将环境变量设置为nuget.exe的位置,将位置添加到系统的路径中,或者将其硬输入Command
参数。
就个人而言,我更愿意下载latest version of nuget.exe并将其放入用户的%userprofile%\.nuget
文件夹中。这是nuget存储包的本地缓存的地方,因此它应该已经创建。
发布到远程存储库的示例。
<Target Name="PostPackNugetDeploy" AfterTargets="Pack" Condition="'$(Configuration)' == 'Release'">
<Exec Command="="%userprofile%\.nuget\nuget.exe push "$(OutputPath)$(PackageId).$(PackageVersion).nupkg" -Source "$(NuGetSourceRelease)" -Verbosity Detailed" />
</Target>
发布到本地存储库的示例。
<Target Name="PostPackNugetDeploy" AfterTargets="Pack" Condition="'$(Configuration)' == 'Release'">
<Exec Command="%userprofile%\.nuget\nuget.exe add "$(OutputPath)$(PackageId).$(PackageVersion).nupkg" -source \\Server\Packages" />
</Target>
您可以在https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets
找到有关nuget的MSBuild目标的文档答案 1 :(得分:2)
此处已请求此功能:MDN join。
NuGet发布通常使用构建/部署自动化软件(如TFS,VSTS,Jenkins等)进行处理。