【问题标题】:Move packages folder inside the solution folder在解决方案文件夹中移动包文件夹
【发布时间】:2020-03-13 08:59:45
【问题描述】:

Visual Studio 2017 / ASP.NET Web 应用程序解决方案。

默认文件夹结构如下:

我想要实现的是将所有内容(包括包)保存在 WebApplication1 文件夹中(WebApplication1.sln 文件除外)。

我知道 NuGet.Config,但不幸的是,将此文件放在 .sln 文件旁边似乎是强制性的。我宁愿将此文件放在WebApplication1 文件夹中。我希望在解决方案文件夹之外有 ONLY ONE 文件:WebApplication1.sln 文件。

【问题讨论】:

标签: visual-studio nuget nuget-package


【解决方案1】:

我知道 NuGet.Config,但不幸的是,将此文件放在 .sln 文件旁边似乎是强制性的。我宁愿将此文件放在 WebApplication1 文件夹中。我希望解决方案文件夹之外只有一个文件:WebApplication1.sln 文件。

我了解您的要求,您只想在解决方案文件夹之外拥有 WebApplication1.sln 文件。但是如果你使用nuget.config来改变包的位置,这个nuget.config文件会被放在解决方案文件夹之外的一个文件夹中,这不是你想要的。

要解决这个问题,你可以把这个nuget.config文件放在解决方案文件夹外面,这个文件不需要放在.sln文件旁边,比如你可以把这个文件放在C 驱动器,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="C:\Users\<UserName>\source\repos\WebApplication1\WebApplication1\packages" />
  </config>
</configuration>

然后关闭你的Visual Studio并删除解决方案文件夹中的packages文件夹,重新打开Visual Studio并打开你的解决方案,右键单击你的解决方案,选择restore the nuget packages,所有的nuget包都会被放置在解决方案文件夹中,解决方案文件夹之外的唯一文件是WebApplication1.sln 文件:

注意:此方法有其自身的局限性,我们必须在nuget.config文件中使用绝对路径,此设置仍然适用于其他解决方案。

此外,您可以尝试在项目文件中使用PackageReference 而不是packages.config。使用PackageReference,您的包指向全局包文件夹C:\Users\&lt;UserName&gt;\.nuget\packages,因此我们不需要添加nuget.config 文件来更改包文件夹。

要使用 PackageReference,请转到 Tools->NuGet PackageManager->Package Manage Settings:

希望这会有所帮助。

【讨论】:

  • NuGet.Config文件放在C的根目录下的解决方案是可行的...但不幸的是它影响了计算机上的所有解决方案。在我的情况下,使用PackageReference 的解决方案不起作用(存在从 packages.config 到 PackageReference 的迁移过程,但尚未与 ASP.NET 兼容)。话虽如此,我将您的答案标记为已接受,因为我认为目前这是唯一可用的解决方案。谢谢。
【解决方案2】:

我对 Visual Studio 为什么将包文件夹放在.sln 旁边但在WebApplication1 文件夹之外的理解是,WebApplication1WebApplication1 解决方案中的一个项目。但是一个解决方案可以包含多个项目。在您的情况下,项目名称恰好与解决方案名称相同(由于您在 vs 中创建此项目和解决方案时)。因此,如果您在此解决方案中有多个项目但想共享一些 nuget 包,那么将 package 文件夹放在项目文件夹之外是有意义的。

这就是我对为什么 vs 有这个默认设置的理解。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多