【问题标题】:Nuget prevent generating packages folder in solutionNuget防止在解决方案中生成包文件夹
【发布时间】:2017-12-22 18:58:31
【问题描述】:

我有一个包含两个项目的解决方案。

/Solution
    .sln
    .nuget.config
    /ProjectA
        .csproj
        .nuspec
    /ProejctB
        .csproj
        .nuspec

当我通过 nuget 添加依赖项 ProjectA 时。

项目结构变成了这样:

/Solution
    .sln
    nuget.config
    /packages
         .nupkg
         /lib
             .dll
    /ProjectA
        .csproj
        .nuspec
        packages.config
    /ProejctB
        .csproj
        .nuspec

基本上,Visual Studio 创建一个 packages.config 文件并将依赖项放在那里。并且,依赖项被添加到/packages 文件夹中。此外,.csproj 的内容也发生了变化。(添加了一个引用,其中包含到 /packages 文件夹中的 dll 的相对路径。)

我有两个问题。

1- 在 nuget.config 文件中,我放入了以下行。所以我希望 nuget 将使用默认的本地存储库,而不是在解决方案中创建 /packages 文件夹。如何防止在解决方案中创建 /packages 文件夹。相反,我想使用"%userprofile%\.nuget\packages"

<add key="globalPackagesFolder" value="%userprofile%\.nuget\packages" />

2- 当我将依赖项添加为 nuget 包时。仍然 .csprj 文件被更改,并且 dll 的相关路径被添加到那里作为相对路径的引用。可以吗?自动生成的packages.config 不够。为什么还要更新这个文件。

【问题讨论】:

  • 为什么解决方案中有一个 packages 文件夹很重要?
  • 每个解决方案都有一个包文件夹,我认为最好在系统中有一个包文件夹,每个解决方案都可以使用这个文件夹。 “%userprofile%\.nuget\packages”已经存在,所以我想使用它。
  • 包管理器使用本地缓存。它会将dll复制到每个目录中(因为不同的项目可能会引用不同的版本)
  • @melih.tt,我已经更新了我的答案更多详细信息,您可以检查它是否适合您。如果没有,请在使用以下方法后告诉我最新状态。

标签: c# visual-studio-2015 nuget nuget-spec


【解决方案1】:

1- 在 nuget.config 文件中,我放入了以下行。所以我希望 nuget 将使用默认的本地存储库,而不是在解决方案中创建 /packages 文件夹。如何防止在解决方案中创建 /packages 文件夹。相反,我想使用“%userprofile%.nuget\packages”。

您应该在 NuGet.Config 中使用以下设置:

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

您可以从下面的屏幕截图中查看测试结果,包被添加到“%userprofile%\.nuget\packages”文件夹中:

注意:注意文件名大小写,添加后重启VS

2- 当我将依赖项添加为 nuget 包时。仍然 .csprj 文件是 已更改并在此处添加 dll 的相关路径作为参考 相对路径。可以吗?自动生成的 packages.config 还不够。 为什么还要更新这个文件。

不是,因为.csproj 文件中的Package.config 和HintPath 有不同的作用。 NuGet 使用 Package.config 来管理 Packages,Visual Studio 使用 .csproj 中的 HintPath 引用 Dll 文件的路径。这两个文件都需要更新,否则Visual Studio会抛出错误“找不到引用...”

【讨论】:

  • 这对我有用,谢谢,我觉得这里唯一缺少的是,如何通过 Visual Studio 而不是通过资源管理器添加 .nuget 文件夹。
猜你喜欢
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多