【问题标题】:Change nuget packages search&install folder for a project in Visual Studio 2017在 Visual Studio 2017 中更改项目的 nuget 包搜索和安装文件夹
【发布时间】:2018-11-27 17:21:23
【问题描述】:

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

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

我怎样才能做到这一点?

我已经尝试将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 文件之前的一个目录中。我可以更改该特定项目的这些包的下载位置(并从我的项目的引用中提取)吗?

【问题讨论】:

  • 这样做的目的是什么?为什么不将相同的 nuget 包添加到您的新项目中?
  • @Ley,我有一个 Git 存储库,其中包含多个具有不同依赖项的项目,我忽略了包文件夹,我依赖于需要能够找到这些包的“恢复 nuget 包”选项。它们已经下载到我的电脑上,我只需要通知我正在处理的项目。
  • 我绝不是专家,也许我构建 repo 的方式很糟糕。让我知道它是否存在以及是否有更好的选择。但是我的 repo 的目标是让多个文件夹具有不同的项目,这些项目做不同的事情,具有不同的依赖关系,并且可以在某些解决方案(作为项目)中相互引用。
  • 您所描述的基本上是 Visual Studio 的 Nuget 包管理器的默认行为,您的所有 dll 都被下载到 ..\packages 中,所有引用它的项目都将共享。一旦你使用 Nuget 包管理安装包,它会自动添加对你的项目的引用,并在你的项目文件夹中创建一个 packages.config 文件,该文件指示该项目使用的 nuget 包,当你恢复它时,它会正确找到它.

标签: c# .net visual-studio winforms nuget


【解决方案1】:

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

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

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

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

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

查看这个帖子:Installing NuGet package located in local package repository into a new Visual Studio Solution

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

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

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

</configuration>

不需要globalPackagesFolder 的设置,它用于全局包文件夹C:\Users\&lt;UserName&gt;\.nuget\packages

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

希望这会有所帮助。

【讨论】:

  • 是的,这正是我所需要的,感谢您分享这些信息。我不知道您可以以这种方式使用“包资源”。
猜你喜欢
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多