Nuget阻止在解决方案中生成包文件夹

时间:2017-07-18 04:55:20

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

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

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

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

enter image description here

项目结构如下:

/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 {}}。为什么还要更新此文件。

1 个答案:

答案 0 :(得分:2)

  

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”文件夹中:

enter image description here

注意:注意文件名的大写和小写以及添加后重新启动VS

  

2-当我将依赖项添加为nuget包时。仍然.csprj文件是   更改并将dll的相关路径添加到那里作为参考   相对路径。好吗?是不是自动生成的packages.config就够了。   为什么还要更新此文件。

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