Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2017 自动发布使用VS2017生成的NuGet包_Visual Studio 2017_Nuget Package_.net Standard - Fatal编程技术网

Visual studio 2017 自动发布使用VS2017生成的NuGet包

Visual studio 2017 自动发布使用VS2017生成的NuGet包,visual-studio-2017,nuget-package,.net-standard,Visual Studio 2017,Nuget Package,.net Standard,Visual Studio 2017的新增功能是在构建时为某些目标类型生成NuGet包(即,.NET Standard 2.0,我正在使用它) 这非常有效,成功构建时会生成.nupkg文件 但是,我不知道如何将构建的包自动发布到本地存储库 <Target Name="PostPackNugetDeploy" AfterTargets="Pack" Condition="'$(Configuration)' == 'Release'"

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

这非常有效,成功构建时会生成
.nupkg
文件

但是,我不知道如何将构建的包自动发布到本地存储库

<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 push -Source https://my.nuget.server/nuget/ "C:\Source\MyProject\bin\Release\MyProject.1.0.0.nupkg"
但这带来了两个问题:

  • 软件包的名称包括版本号,而这不能作为生成后事件变量使用,因此我不能说,例如,
    nuget push$(NugetPackage)
    。我也无法找到一个宏/变量的组合来有效地获得包名
  • 自动NuGet打包过程发生在后期生成事件之后,因此在后期生成时,包甚至还没有生成 微软已经提供了这个非常棒的自动NuGet打包,但是没有办法将它推送到本地存储库(或者看起来是这样的)


    有人用过这个吗?我错过什么了吗?有解决办法吗?是否正在处理此功能?

    此处已请求此功能:


    NuGet发布通常使用构建/部署自动化软件(如TFS、VSTS、Jenkins等)进行处理。

    您可以通过将下面的行直接添加到库csproj中来自动发布到NuGet。您需要将环境变量设置为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>
    
    
    
    谢谢-我在该功能请求中添加了一条评论以跟踪它。似乎还有其他一些人也需要这样做——并不是每个人都有功能齐全的ALM设置,我们中的一些人喜欢直接从VS发布,因为它快速且无摩擦。:)为我工作,但我使用了“copy”命令而不是“exec”命令:
    如果不发布它,它会复制文件。如果您发布它,它将为版本控制创建文件夹结构。谢谢提示。我是nuget新手,所以我将尝试使用“add”命令进行比较。John是对的。将其更改为exec nuget后,表示版本的文件夹、sha文件和nuspec文件都出现在nuget提要存储库中。