首页 文章

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

提问于
浏览
0

我有一个包含几个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

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

    你可能会混淆概念“ repositoryPath " and " Packages source ” .

    虽然您删除了所有引用,但是将我的Packages目录添加为NuGet包源,从自定义包源安装引用,您只需更改Packages源 . Once you install the packages from the custom package source, NuGet will download the packages from the custom package source and set those download packages to the default repositoryPath, then install those packages from default repositoryPath to your project . 所以它仍然在默认路径中 .

    如果要更改 .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 .

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

  • 1

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

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

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

    CREATING A LOCAL NUGET REPOSITORY FOR OFFLINE DEVELOPMENT

相关问题