如何在多个解决方案中使用Nuget

如何在多个解决方案中使用Nuget,nuget,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

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

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在应用程序1和应用程序2内创建两个packages文件夹

但是所有这些项目和解决方案都是相互关联的,所以从逻辑上讲,最好只有一个packages文件夹

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


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

在两个解决方案之间共享存储库是不可能的,因为如果您更新解决方案a中的包,那么解决方案b中的项目将不会更新,除非它们也在解决方案a中(并且可能会自动删除它们的包,因为解决方案a不再使用它们)。基本上,这意味着有两个解决方案文件是多余的,否则您将在不知道的情况下破坏另一个解决方案


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

您可以通过向每个解决方案添加包含以下内容的nuget.config文件来实现这一点

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

..\包
确保它们都指向同一个文件夹

创建此文件时,必须重新启动Visual Studio以使其使用此设置(或至少关闭并打开解决方案)


但更实际的做法是只创建一个所有解决方案都使用的nuget.config。只需确保它位于高于您希望包含的任何解决方案文件的文件夹中。还原时,nuget manager将从解决方案文件旁边开始搜索此文件,如果未找到,则开始向上搜索文件夹结构

在最新的Nuget中,如果repositoryPath是相对路径,则应使用正斜杠写入。(../Packages)@Schwarzie2478我有两个不同的共享项目解决方案。如果我使用上述设置,它将在何处创建packages文件夹?repositoryPath的相对值从nuget.config文件本身的位置开始。因此,此示例将始终在nuget.config文件上方的一个文件夹中创建一个packages文件夹。如果我有相互关联的项目,我总是尝试至少有一个包含所有项目的解决方案,这样升级包就不会那么痛苦了。。。