使用本地和服务器源进行点网还原

时间:2019-04-19 09:49:49

标签: .net .net-core teamcity

我想使用dotnet restore命令使用--source标志来提供两个源。第一个位于项目文件内的本地文件夹中,第二个位于远程服务器上(实际上是官方的nuget源)。

我在teamcity内部使用了dotnet restore,并将源作为参数传递如下:

LocalFolder https://api.nuget.org/

但是,当teamcity建立我的管道时,dotnet首先在C:\ BuildAgent \ work \ LocalFolder中恢复搜索包,这很好-这就是我想要的。但是在下一步中,它正在C:\ BuildAgent \ work \ https://api.nuget.org/中寻找第二个来源,这显然是错误的。

当其中一个源是本地源,第二个源托管在服务器上时,我不知道如何在一个dotnet restore命令中合并两个源。有什么解决方法吗?

@编辑 我知道我可以使用单独的dotnet restore命令创建两个构建步骤。一个用于本地源,第二个用于服务器。但是,最好在一个命令中组合它。

3 个答案:

答案 0 :(得分:1)

万一其他人偶然发现了这个问题,我找不到真正的问题根源,但我可以通过在源列表中的本地引用之前放置远程引用来解决此问题。

答案 1 :(得分:0)

您可以向[class.temporary]/6命令多次提供source参数,以向其提供多个源:

  

-s|--source <SOURCE>

     

指定要在还原操作期间使用的NuGet软件包源。此设置将覆盖NuGet.config文件中指定的所有源。可以通过多次指定此选项来提供多个来源。

因此,您可以运行:

dotnet restore -s YourPackagesFolder -s https://api.nuget.org/

如果使用--verbosity n运行它,则可以看到输出:

Feeds used:
             C:\<projectlocaltion>\LocalFolder
             https:\api.nuget.org\`

答案 2 :(得分:0)

我知道它应该像这样工作,但是在teamcity构建步骤中使用dotnet restore可以让我在teamcity表单上将源作为参数传递。并在一个构建步骤中使用以下供稿:

C:\\ LocalFolder C:\\ https:\ api.nuget.org \

我发现应该将远程源传递给团队城市,例如:'./;https:\api.nuget.org\',但这也行不通。