Jenkins从nuget.org下载nuget包,尽管我已经从nuget.config中删除了提要



我有一个用于nuget包的内部托管nexus。我在nuget.config中添加了nexus repo url。我还删除了nuget.org提要,所以它不会从互联网上下载包。我在同一台机器上接待过詹金斯。但当在jenkins中执行构建时,nuget包是从互联网下载的,而不是从nexus repo下载的。詹金斯是否引用了任何单独的nuget.config文件?或者有没有任何命令可以删除nuget.org提要,这样我就可以在jenkins中执行它了!

正如NuGet关于Common NuGet配置的文档所描述的,NuGet从多个nuget.config文件中累积设置。你没有解释你是如何";删除nuget.org提要";,但我能想到的只有一种方法,那就是让它变得可靠和可复制。正如我已经链接的docs页面和nuget.config引用页面中提到的,<packageSources>元素中允许有一个<clear />元素,它告诉nuget忽略任何累积的nuget.config文件中定义的任何源。

如果您使用Visual Studio删除了nuget.org提要,不幸的是,VS的nuget设置过于简单,无法理解和处理多文件继承的设置。在VS中添加或删除源时,它通常会编辑用户配置文件nuget.config,这意味着它会影响当前计算机上的所有解决方案和当前用户配置文件。这意味着,当您在不同的机器上使用repo,甚至在同一台机器上使用不同的用户配置文件时,您认为应用于解决方案的NuGet设置将不再存在。您需要使用nuget.exe、dotnet cli,或者只手动编辑nuget.config xml文件。

NuGet将在其运行的任何机器上,如果在默认用户配置文件位置未找到nuget.config文件,则创建预先配置了nuget.orgnuget.config。因此,如果您的repo没有明确清除继承的源,那么当nuget第一次在新的用户配置文件上运行时,它将创建一个包含nuget.orgnuget.config。因此,如果您的解决方案没有自己的使用<clear />的nuget.config,那么它将在您没有从用户配置文件nuget.config.中删除nuget.org的任何计算机上继承nuget.org。

因此,假设唯一需要的设置是公司的nuget提要,您应该在您的repo根目录中签入一个nuget.config,其内容大致类似于:

<configuration>
<packageSources>
<clear />
<add key="company-feed" value="https://wheverver/index.json" />
</packageSources>
</configuration>

使用—source(或-s(选项运行dotnet构建。这将允许您指定NuGet源。有关更多详细信息,请参阅dotnet构建文档。

最新更新