我一直在使用NuGet从外部和内部包源中检索包,这非常方便.但我已经意识到默认情况下每个解决方案都存储了这些包,当一些具有NuGet引用的项目包含在多个解决方案中时,这非常令人沮丧.然后将引用更改为其他解决方案包文件夹,这可能实际上对另一个开发人员或构建计算机不可用.
我已经看到有一些方法可以指出一个公共的包位置(可能在项目根级别,我们正在使用TFS源代码控制)和NuGet的2.1 版本,请参阅发行说明.我正在使用NuGet v2.7
但我试图添加nuget.config文件,但没有看到任何影响.包仍存储在解决方案文件夹中.有什么我错过了吗?似乎有不同的xml节点结构要添加到nuget.config文件中,具体取决于谁回答了这个问题:Schwarzie建议另一个Stackoverflow线程:
<settings>
<repositoryPath>..\..\[relative or absolute path]</repositoryPath>
</settings>
Run Code Online (Sandbox Code Playgroud)
NuGet 2.1的发行说明(见上面的链接)表明了这种格式:
<configuration>
<config>
<add key="repositoryPath" value="..\..\[relative or absolute path]" />
</config>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我不知道其中哪一个,或任何一个,或两者最终都会起作用.我在解决方案级别尝试了两种方法.nuget.config文件可以放在TFS项目根级别上,还是必须放在解决方案目录中?似乎NuGet以某种顺序从这些文件中读取和应用设置,为什么将它们添加到多个级别是有意义的,其中解决方案级别上的nuget.config文件将覆盖TFS项目根级别上的一个.这可以澄清吗?
在这些引用工作之前,是否需要删除所有已安装的软件包?我很乐意,如果有人可以提供逐步说明,从特定于解决方案的nuget使用转移到一个公共包文件夹,其中属于多个解决方案的项目可以找到他们所需的nuget包.