首页 > 解决方案 > 在 Visual Studio 2017 中更改项目的 nuget 包搜索和安装文件夹

问题描述

我在 VS2017 中为一个项目创建了一个解决方案。它是一个 .Net C# Winforms 应用程序。我希望项目将其他项目先前下载的 nuget 包加载到我计算机上的某个文件夹中,并将它们添加到其引用中。

包文件夹位于解决方案目录后面的一个目录。

我怎么能做到这一点?

我已经尝试将一个nuget.config文件添加到包含以下 XML 代码的解决方案位置:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <config>
    <add key="globalPackagesFolder" value="..\packages" />
    <add key="repositoryPath" value="..\packages" />
  </config>

</configuration>

即使将其包含在 VS 解决方案资源管理器中,我的解决方案似乎也完全忽略了它。

我还读过它globalPackagesFolderNUGET_PACKAGES(或类似的东西)环境变量覆盖,那么在.config文件中设置它有什么意义呢?还是我没有正确理解某些东西?

另外,有点离题,但我仍然很好奇。当我在我的项目上单击“管理 nuget 包”并下载一些东西时,这些包被放置在.csproj我的项目文件之前的一个目录中。我可以更改该特定项目的这些包的下载位置(并从我的项目的引用中提取)吗?

标签: c#.netvisual-studiowinformsnuget

解决方案


在 Visual Studio 2017 中更改项目的 nuget 包搜索和安装文件夹

要回答这个问题,我们需要明确两个概念,Package sourceRepository。显然,Package source用于下载 nuget 包,Repository用于存储解决方案的 nuget 包。简单来说,Nuget 管理包就是package sourceRepository.

因此,如果您希望 Winforms 应用程序将之前由其他项目下载的那些包加载到某个文件夹中并将它们添加到其引用中,您有两件事要做(如果我理解正确的话)。

一种是将之前由其他项目下载的那些包添加到您的 Winforms 应用程序中,另一种是将这些包添加到某个文件夹中。

要解决第一件事,它需要下载包,所以我们必须将存放其他项目之前下载的nuget包的文件夹制作到包源中。转到options->Tools->NuGet Package Manager->Package Sources,添加存储之前其他项目下载的包的文件夹,然后您可以通过nuget包管理器UI将这些包添加到Winforms应用程序:

检查此线程:将位于本地包存储库中的 NuGet 包安装到新的 Visual Studio 解决方案中

要解决第二个问题,就像您所做的那样,将一个nuget.config文件添加到包含以下 XML 代码的解决方案位置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <config>
    <add key="repositoryPath" value="..\packages" />
  </config>

</configuration>

在此处输入图像描述

不需要用于globalPackagesFolder全局包文件夹的设置C:\Users\<UserName>\.nuget\packages

注意:添加后nuget.config,记得重启Visual Studio,然后添加nuget包,包会存放在我的解决方案的.sl文件之前的目录中(因为你设置repositoryPath..\packages)。

希望这可以帮助。


推荐阅读