我一直在使用NuGet从外部和内部包源检索包,这非常方便。但是我意识到默认情况下包会按解决方案存储,当某些具有NuGet引用的项目包含在多个解决方案中时,这非常令人沮丧。然后引用将更改为其他解决方案包文件夹,这实际上可能对另一个开发人员或构建机器不可用。
我已经看到了一些方法可以指出通用的软件包位置(也许是在项目根级别,我们正在使用TFS源控制),这是通过NuGet的2.1版本实现的,详见发布说明。我正在使用NuGet v2.7
但是我尝试添加nuget.config文件,但没有看到任何效果。软件包仍然存储在解决方案文件夹中。我错过了什么吗? 似乎有不同的xml节点结构要添加到nuget.config文件中,这取决于谁回答了这个问题: Schwarzie在另一个Stackoverflow线程上提出了建议:
<settings>
<repositoryPath>..\..\[relative or absolute path]</repositoryPath>
</settings>
NuGet 2.1 的发布说明(参见上面的链接)建议使用此格式:<configuration>
<config>
<add key="repositoryPath" value="..\..\[relative or absolute path]" />
</config>
</configuration>
我不知道这些中的哪一个会最终起作用,或者任何一个还是两个都可以。我已经在解决方案级别上尝试了它们两个。
nuget.config文件必须放置在TFS项目根目录级别上吗?或者必须放在解决方案目录中?看来NuGet按照一定的顺序读取和应用这些文件中的设置,因此在多个级别添加它们是有意义的,其中解决方案级别上的nuget.config文件将覆盖TFS项目根级别上的文件。请问这是否可以澄清?
在引用这些内容之前,我需要删除所有已安装的包吗?如果有人能够提供逐步说明,以从特定于解决方案的nuget使用移动到通用包文件夹为好,那就太好了,这样属于几个解决方案的项目就可以找到其所需的nuget包了。
$
。关于 NuGet.Config 文件的问题,答案在这里。它首先查找 .nuget,然后查找所有父目录,然后在您的 AppData 中查找“全局”文件:然后以相反的顺序应用它们(无论那意味着什么)。 - Benjol