在Visual Studio 2015中如何为多个解决方案和项目设置单个Nuget包文件夹

16
我们正在Visual Studio 2015中开发多个解决方案,这些解决方案共享一些需要NuGet包的核心项目。当一个解决方案添加了NuGet包并稍后被另一个解决方案打开时,NuGet引用无法解析。
文件夹结构如下:
- Codebase - SharedProjects - SharedProject1 - SolutionA - WebProjectA - 文件夹 A 中的 packages - SolutionB - WebProjectB - 文件夹 B 中的 packages
当我在打开SolutionA时向SharedProject1安装NuGet包时,dll引用显示指向packages文件夹 A 的路径。当在另一台计算机上打开SolutionB时,由于不存在packages文件夹A,因此SharedProject1出现引用错误。
我已阅读此解决方案:Setting up a common nuget packages folder for all solutions when some projects are included in multiple solutions,但是这不能解决问题,因为在 .nuget/NuGet.config 文件中的 repositoryPath 键不适用于 Visual Studio 2015 和 Nuget 3.4.3。
1个回答

17
为了解决这个问题,我们在Codebase目录中添加了一个NuGet.config文件,然后删除了所有其他解决方案中的Nuget.config文件和.nuget文件夹。由于NuGet配置会传播到子文件夹,单个NuGet.config文件中的设置将应用于所有解决方案。
在Nuget.config文件中,我们放置了packageSourcerepositoryPath设置。
示例NuGet.config文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="./SharedPackages" />
    </config>
</configuration>

由于.csproj文件中的dll引用仍然显示旧的packages文件夹,因此需要卸载并重新安装现有的NuGet包。或者您可以手动编辑.csproj文件。

生成的文件夹结构:

  • Codebase 文件夹
    • Nuget.Config 文件
    • SharedPackages 文件夹
    • SharedProjects 文件夹
      • SharedProject1
    • SolutionA 文件夹
      • WebProjectA
      • 包文件夹 A
    • SolutionB 文件夹
      • WebProjectB
      • 包文件夹 B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接