从解决方案中的目录引用NuGet包

时间:2017-08-01 04:06:48

标签: .net visual-studio asp.net-core nuget

我有一个包含几个ASP.NET核心项目的解决方案,在Visual Studio 2015中管理。

我的NuGet包当前存储在C:\Users\My User\.nuget\packages\中。我需要在我的解决方案和引用包中有一个Packages目录。像这样:

  • SolutionFolder
    • SRC
      • PROJECT1
      • Project2的
      • [...]

我将软件包从上面的默认路径复制到解决方案目录中,然后删除了项目的所有引用。然后我将Packages目录添加为NuGet Package Source。最后,我点击Manage NuGet Packages并将其添加到特定项目中,确保选择了我的自定义包源。

这似乎有效,但是当我检查引用包的路径时,它仍然是默认的C:\Users\[...]\packages\路径。

我错过了什么?如何从解决方案目录中引用软件包?

我尝试打开.xproj文件并手动设置路径,就像我以前在.csproj文件中做的那样,但似乎在.xproj文件中不可能。或者我只是不知道该怎么做。

3 个答案:

答案 0 :(得分:2)

  

我将软件包从上面的默认路径复制到解决方案目录中......它仍然是默认的C:\ Users [...] \ packages \ path

你可能会混淆概念" repositoryPath"和" Packages source"。

虽然您删除了所有引用,但我将Packages目录添加为NuGet包源,从自定义包源安装引用,您只需更改Packages源。 从自定义程序包源安装程序包后,NuGet将从自定义程序包源下载程序包并将这些程序包设置为默认repositoryPath,然后将这些程序包从默认repositoryPath安装到你的项目。所以它仍然在默认路径中。

如果您想更改 .net core 项目的软件包默认位置,您可以设置" NUGET_PACKAGES"环境变量。只需设置" NUGET_PACKAGES" =" c:\ teampackages"。或者,您可以在解决方案旁边放置一个NuGet.Config文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
    <config>
      <add key="globalPackagesFolder" value=".\packages" />
    </config>
</configuration>

有关详细信息,请参阅GitHub上的the same issue

然而,我想说的是你可能对结果不满意。因为.Net Core项目依赖于如此多的NuGet包。几乎徘徊在1GB左右。我想你不想为每个解决方案设置所有这些包。此外,通过此更改,您需要在VS中为每个解决方案设置其他源。这对.net核心项目来说非常不方便。这就是为什么NuGet团队为.net核心项目设置特殊设置的原因。

答案 1 :(得分:1)

  

您可以在src目录中创建Nuget.config并设置   repositoryPath

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="..\packages" />
  </config>

</configuration>

答案 2 :(得分:0)

您可以为离线开发创建本地nuget存储库,而不是让包目录使用本地存储库。这是指南:

CREATING A LOCAL NUGET REPOSITORY FOR OFFLINE DEVELOPMENT