【问题标题】:Dotnet restore using local and server sources使用本地和服务器源进行 Dotnet 还原
【发布时间】:2019-10-26 05:19:21
【问题描述】:

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

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

本地文件夹 https://api.nuget.org/

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

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

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

【问题讨论】:

  • 你能把完整的restore命令粘贴到这里吗?
  • 我没有使用完全恢复命令,因为我正在使用 teamcity UI 来执行构建步骤,所以我在 teamcity 中将源作为参数传递给 dotnet restore 命令。但在构建日志中是这样的:dotnet restore -s LocalFolder -s https://api.nuget.org/ 。根据微软的文档应该可以工作,但它正在寻找两个本地文件夹。
  • 嗯,这很奇怪。我不再使用teamcity,所以在那里我帮不上什么忙。我所知道的是,您可以将脚本(如 powershell)作为构建步骤运行。因此,您可以将 dotnet restore 作为 powershell 命令运行。您仍然可以在那里使用 TeamCity 变量,只需将其传递给 powershell 任务。

标签: .net .net-core teamcity


【解决方案1】:

您可以向dotnet restore 命令多次提供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】:

    万一其他人偶然发现此问题,我无法找到问题的实际根本原因,但我能够通过在源列表中将远程引用放在本地引用之前来解决它。

    【讨论】:

      【解决方案3】:

      我知道它应该像那样工作,但是在 teamcity 构建步骤中使用 dotnet restore 允许我将源作为参数传递给 teamcity 表单。在一个构建步骤中这样做会使用以下提要:

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

      我发现远程资源应该像这样传递给 teamcity:'./;https:\api.nuget.org\',但它也不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2015-11-28
        • 2019-03-17
        • 2020-09-26
        • 2012-05-30
        • 2023-03-08
        • 2020-10-10
        相关资源
        最近更新 更多