gpt4 book ai didi

visual-studio-2017 - 自动发布使用 VS2017 构建的 NuGet 包

转载 作者:行者123 更新时间:2023-12-04 11:19:03 29 4
gpt4 key购买 nike

Visual Studio 2017 中的新功能是能够在构建时为某些目标类型(即 .NET Standard 2.0,我正在使用)生成 NuGet 包。

这很好用,而且 .nupkg文件在成功构建时生成。

但是,我无法弄清楚如何将构建的包自动发布到我们的本地存储库。

我已经尝试了以下构建后事件:

nuget push -Source https://my.nuget.server/nuget/ "C:\Source\MyProject\bin\Release\MyProject.1.0.0.nupkg"

但这存在两个问题:
  • 包的名称包括版本号,这不能用作构建后事件变量,所以我不能说,例如,nuget push $(NugetPackage) .我也无法找出可以有效获取包名称的宏/变量组合。
  • 自动 NuGet 打包过程发生在 post-build 事件之后,所以在 post-build 时,包甚至还没有生成!

  • 微软已经提供了这个很棒的自动 NuGet 打包,但是没有办法将它推送到本地存储库(或者看起来是这样)!

    有没有人让这个工作?我错过了什么吗?有解决方法吗?这是正在处理的事情吗?

    最佳答案

    您可以通过将以下行直接添加到您的库 csproj 来自动发布到 nuget。您需要将环境变量设置为 nuget.exe 的位置,将该位置添加到系统的 PATH 中,或者将其硬输入 Command范围。
    我个人更喜欢下载latest version of nuget.exe并将其放入用户的 %userprofile%\.nuget文件夹。这是 nuget 存储包的本地缓存的地方,因此它应该已经创建。
    发布到远程存储库的示例。

    <Target Name="PostPackNugetDeploy" AfterTargets="Pack" Condition="'$(Configuration)' == 'Release'">
    <Exec Command="="%userprofile%\.nuget\nuget.exe push &quot;$(OutputPath)$(PackageId).$(PackageVersion).nupkg&quot; -Source &quot;$(NuGetSourceRelease)&quot; -Verbosity Detailed" />
    </Target>
    发布到本地存储库的示例。
    <Target Name="PostPackNugetDeploy" AfterTargets="Pack" Condition="'$(Configuration)' == 'Release'">
    <Exec Command="%userprofile%\.nuget\nuget.exe add &quot;$(OutputPath)$(PackageId).$(PackageVersion).nupkg&quot; -source \\Server\Packages" />
    </Target>
    您可以在此处找到有关 nuget 的 MSBuild 目标的文档 https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets
    更新
    我已将其包装到一个 nuget 包中,该包可以在您的项目中引用。它负责所有这一切,您所要做的就是为您的项目添加一个属性。
    您可以在此处完善代码和完整指南。
    https://github.com/SimplerSoftware/SS.NuGet.Publish

    关于visual-studio-2017 - 自动发布使用 VS2017 构建的 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47801362/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com