来自特定包源的 Nuget 包在 Azure 上的 nuget 还原步骤
Nuget package from specific package source on nuget restore step on Azure
我要恢复的包在 nuget.org
和 3rd party myget
上。第 3 方是我想使用的更高版本(预发布),但是它似乎甚至没有尝试找到这个包的 myget 源,因为它在 nuget.org 上找到包,但不是我想要的版本导致以下错误消息:
##[error]The nuget command failed with exit code(1) and error(Errors in packages.config projects
Unable to find version '2.0.0-dev-00013' of package 'Discord.Addons.Interactive'.
https://api.nuget.org/v3/index.json: Package 'Discord.Addons.Interactive.2.0.0-dev-00013' is not found on source 'https://api.nuget.org/v3/index.json'.)
myget 在我的 nuget.config 中正确配置,它在我的解决方案根目录中
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="Foxbot" value="https://www.myget.org/F/foxbot-discord-addons/api/v3/index.json" />
</packageSources>
</configuration>
我将如何使 nuget 还原步骤尊重此包的 myget 包源?
资源不再有优先级,最快的为准。
包在 ID 和版本上应该是唯一的,不支持 Feed 包含相同 id/version 的不同变体的情况。
优先顺序导致性能问题,因为对源的调用是顺序的而不是并行的。我建议您使用以下方法解决此问题:
- 避免使用相同 id/version 的不同包,或者通过使用已经解决的单个 feed 预先协调这些问题。
- 在自定义提要源中添加一个prefix/suffix
如果仍然需要优先级,你可以像下面这样:
进行如下配置:
<packageSources>
<!-- Internal package source comes before NuGet.org proxy -->
<add key="my_private_feed" value="Feed1/" priority="1" />
<add key="Orgnugetorg" value="https://www.nuget.org/api/v2/" priority="2" />
</packageSources>
需要调整**PackageDownloader**
,如果包源有不同的优先级,他等待最高优先级的下载,否则最快的获胜,
但请注意,这需要更改管道中的 Packagedownloader。
附加参考:
https://github.com/NuGet/Home/issues/5611
NuGet packageSources priority
希望对您有所帮助。
How would I go about making the nuget restore step respect the myget
package source for this package?
对于 nuget restore
任务,有一个选项用于控制在包还原期间使用哪些提要。
查看要使用的提要:
不同于在本地恢复包,解决方案目录(Devops Repos)中的nuget.config
文件直到我们检查 Feeds in my Nuget.config
选项。
所以在那个过程中,nuget 实际上没有为 package source
使用你的 nuget.config
文件,这导致了这个问题:
解决方法:
像下面这样在我的 Nuget.config
中配置 Feed 以确保 nuget 将使用解决方案目录中的 Nuget.config
文件:
另外:如果您使用yaml format而不是经典格式,您应该设置feedsToUse: 'config'
和nugetConfigPath: 'path/NuGet.config'
。
我要恢复的包在 nuget.org
和 3rd party myget
上。第 3 方是我想使用的更高版本(预发布),但是它似乎甚至没有尝试找到这个包的 myget 源,因为它在 nuget.org 上找到包,但不是我想要的版本导致以下错误消息:
##[error]The nuget command failed with exit code(1) and error(Errors in packages.config projects
Unable to find version '2.0.0-dev-00013' of package 'Discord.Addons.Interactive'.
https://api.nuget.org/v3/index.json: Package 'Discord.Addons.Interactive.2.0.0-dev-00013' is not found on source 'https://api.nuget.org/v3/index.json'.)
myget 在我的 nuget.config 中正确配置,它在我的解决方案根目录中
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="Foxbot" value="https://www.myget.org/F/foxbot-discord-addons/api/v3/index.json" />
</packageSources>
</configuration>
我将如何使 nuget 还原步骤尊重此包的 myget 包源?
资源不再有优先级,最快的为准。
包在 ID 和版本上应该是唯一的,不支持 Feed 包含相同 id/version 的不同变体的情况。
优先顺序导致性能问题,因为对源的调用是顺序的而不是并行的。我建议您使用以下方法解决此问题:
- 避免使用相同 id/version 的不同包,或者通过使用已经解决的单个 feed 预先协调这些问题。
- 在自定义提要源中添加一个prefix/suffix
如果仍然需要优先级,你可以像下面这样: 进行如下配置:
<packageSources>
<!-- Internal package source comes before NuGet.org proxy -->
<add key="my_private_feed" value="Feed1/" priority="1" />
<add key="Orgnugetorg" value="https://www.nuget.org/api/v2/" priority="2" />
</packageSources>
需要调整**PackageDownloader**
,如果包源有不同的优先级,他等待最高优先级的下载,否则最快的获胜,
但请注意,这需要更改管道中的 Packagedownloader。
附加参考:
https://github.com/NuGet/Home/issues/5611
NuGet packageSources priority
希望对您有所帮助。
How would I go about making the nuget restore step respect the myget package source for this package?
对于 nuget restore
任务,有一个选项用于控制在包还原期间使用哪些提要。
查看要使用的提要:
不同于在本地恢复包,解决方案目录(Devops Repos)中的nuget.config
文件直到我们检查 Feeds in my Nuget.config
选项。
所以在那个过程中,nuget 实际上没有为 package source
使用你的 nuget.config
文件,这导致了这个问题:
解决方法:
像下面这样在我的 Nuget.config
中配置 Feed 以确保 nuget 将使用解决方案目录中的 Nuget.config
文件:
另外:如果您使用yaml format而不是经典格式,您应该设置feedsToUse: 'config'
和nugetConfigPath: 'path/NuGet.config'
。