如何使用Nuget与多个解决方案

时间:2011-12-23 20:42:01

标签: nuget

我有许多解决方案,它们在不同的文件夹中共享相同的项目,例如,

Common folder
 - common 1
 - common 2
Contracts folder
 - contracts for project A
 - contracts for Project B
Application 1 folder (in this folder I have my solution file)
 - Solution A
 - nuget creates packages folder there
Application 2 folder
 - Solution B
 - nuget creates packages folder there
packages folder( I need this folder at top level, so all projects can reference it)

使用此结构,Nuget在Application 1和Application 2

中创建了两个包文件夹

但所有这些项目和解决方案彼此相关,所以从逻辑上讲,最好只有一个包文件夹。

是否可以在nuget中仅设置一个文件夹并将该文件夹用于所有解决方案?

或者我应该以另一种方式构建我的解决方案和项目?

2 个答案:

答案 0 :(得分:7)

您可以通过将nuget.config文件添加到具有以下内容的每个解决方案来实现此目的

<settings>
<repositoryPath>..\Packages</repositoryPath>
</settings>

确保它们都指向同一个文件夹。

制作此文件时,必须重新启动Visual Studio才能使用此设置(或者至少关闭并打开解决方案)。

但更实际的是只创建一个所有解决方案都使用的nuget.config。只需确保它位于比您希望包含的任何解决方案文件更高的文件夹中。恢复时,nuget管理器从解决方案文件旁边开始搜索此文件,如果找不到,则开始查找文件夹结构。

答案 1 :(得分:0)

在两个解决方案之间共享存储库实际上是不可能的,就像在解决方案A中更新包一样,解决方案b中的项目将不会更新,除非它们也在解决方案A中(并且可能会自动删除它们的包因为解决方案A不再使用它们了。基本上意味着拥有2个解决方案文件是多余的,或者您将打破其他解决方案而无法知道。

解决方案如何相互关联?如果我们有更多的信息,也许还有另一种解决问题的方法。