如何在多个解决方案中使用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文件夹。如果我有相互关联的项目,我总是尝试至少有一个包含所有项目的解决方案,这样升级包就不会那么痛苦了。。。