如何在packages.config中指定一个NuGet包来自外部源?

5
我正在处理一个依赖于外部来源的NuGet项目的项目。我们使用包恢复而不是将包提交到Git中。对于没有在NuGet设置中配置此来源的开发人员,是否有一种方法可以在packages.config文件中指定应从不同的源获取此软件包?
例如,
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="bootstrap" version="3.0.0" targetFramework="net45" />
  ...

  <!-- How do I specify that this custom package comes from a different source? -->
  <package id="MyCustomPackage" version="1.0.0" targetFramework="net45" />

  ...
  <package id="Respond" version="1.2.0" targetFramework="net45" />
  <package id="WebGrease" version="1.5.2" targetFramework="net45" />
</packages>

2
我希望能找到类似于<package id="MyCustomPackage" source="http://www.mysource.com/nuget" />的东西,但是我似乎无法在任何地方找到它。 - Ken Sykora
相同。被接受的答案不够理想。我正在处理一个带有4个不同NuGet源的构建,并且每个源中都要尝试获取每个软件包,这需要很长时间! - kayleeFrye_onDeck
1个回答

5
每个用户都可以拥有自己的配置文件,在其中您可以指定源码的位置:
<packageSources>
        <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
        <add key="TestSource" value="C:\Temp" />
</packageSources>

更多信息请参见此处文档

您还可以通过向项目或解决方案添加NuGet.config文件来在项目或解决方案级别上进行配置。


有没有办法在项目级别上进行设置,这样如果开发人员克隆现有的源代码,就不需要手动操作了? - Ken Sykora
2
@KenSykora - 如果您查看Donal提供的文档,您会发现可以将NuGet.config添加到项目或解决方案中。因此,如果您将其检入源代码控制,任何使用该项目的人都可以自动获得自定义软件包源。 - Matt Ward
1
太棒了 - 这需要通过 Visual Studio 更多地向新用户展示,类似于 ReSharper 的“保存团队设置”。感谢您的回答! - Ken Sykora
这不是一个理想的解决方案。它会导致Nuget在每个包使用的NuGet.config中检查所有源。对于具有许多Nuget包及其依赖项的项目,这可能会导致相当大的问题,特别是在动态云构建环境中,这些环境并没有充分利用缓存。 - kayleeFrye_onDeck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接