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