将所有包推送到远程 NuGet 提要

Push all packages to remote NuGet feed

我正在尝试将我的应用程序迁移到新的 .Net Core 1.0。我的构建服务器无法访问互联网,因此我在构建服务器上设置了本地 NuGet 服务器 运行。

有没有办法让脚本读取我的解决方案并将所有新的和更新的包推送到远程 NuGet 服务器?

我环顾四周,发现您应该可以将这些行放在 project.json 文件中,它会将所有包推送到服务器。

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ],
    "postcompile": [
      "dotnet pack --no-build",
      "\"%project:Directory%\..\..\nuget.exe\" push \"%project:Directory%\bin\%compile:Configuration%\%project:Name%.%project:Version%.nupkg\" -source http://xx.xxx.xx.xx/nuget -ApiKey "
    ]
  },

然而,我在 dotnet pack --no-build 完成后收到错误消息。

The system cannot find the file specified C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets

如果我双击错误,它会打开文件并转到

<Dnx
  RuntimeExe="$(SDKToolingExe)"
  Condition="'$(_DesignTimeHostBuild)' != 'true'"
  ProjectFolder="$(MSBuildProjectDirectory)"
  Arguments="$(_BuildArguments)"
  />

对此有什么不同的解决方案建议吗?

我认为 common.targets 部分是一个转移注意力的问题。很可能是 nuget.exe 或推送路径不太正确。

我要做的是将 nuget push 命令放在 .cmd 文件中,将文件路径作为参数传递,然后查看输出 window 以查看 nuget 正在使用的实际参数。验证到 nuget exe 和 nupkg 的这些路径是否准确。您可能缺少路径中的框架文件夹。例如,对我来说,我的路径看起来更像

%project:Directory%\bin\%compile:Configuration%\%compile:TargetFramework%\%project:Name%.%project:Version%.nupkg