我们的项目在Azure DevOps的私有工件源中引用了程序包。在Azure DevOps中构建项目时,dotnet restore
可以很好地完成,但是dotnet build
也会尝试还原包并失败
Unable to load the service index for source https://myazdevops.pkgs.visualstudio.com/_packaging/OurPackages/nuget/v3/index.json
解决方法是将--no-restore
添加到dotnet build
和dotnet publish
任务中。
是否有某种方法可以在没有参数的情况下开始构建和发布?
答案 0 :(得分:1)
我认为您的解决方法是解决方案,它在official docs中写道:
从.NET Core 2.0 SDK开始,在以下情况下隐式运行dotnet还原: 您运行dotnet build。如果要禁用隐式还原,何时 运行build命令,可以传递--no-restore选项。
除非添加--no-restore
,否则您无法禁用此行为。
另请参阅this问题和答案。
答案 1 :(得分:1)
我们已经在Github中打开了源代码,您可以参考dotnet build命令的代码。这是一个编译命令,因此我们没有在任务中创建脚本来额外设置authinfo。另外,如您所知,dotnet restore
仅隐式运行,而dotnet build
仅在.net core 2.0之后运行。实际上,如果您在dotnet restore
之前运行过dotnet restore
,则隐式运行的dotnet build
并不是必需的部分。这就是为什么我们提供workaround-添加--no-restore
-以避免此隐式命令的原因。
这是一个非常方便的方法,可以使您的编译过程非常简洁。但是,如果仍然不希望使用此参数,则需要执行另一项配置工作以使用凭据进行授权。
配置Azure Artifacts Credential Provider,然后使用VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
environment variable传递凭据。 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
包含您需要使用JSON格式进行身份验证的任何提要的终结点凭据。
答案 2 :(得分:0)
我的内部NuGet提要也有类似的问题。 我通过在包含NuGet.org和我们内部NuGet存储库的存储库中添加nuget.config文件来解决该问题。
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="internal" value="URL_TO_INTERNAL_FEED" />
</packageSources>
</configuration>
然后只需在还原步骤中指定该文件的NuGet.config的路径。
希望这会有所帮助。