对于我的大多数项目,我有以下约定:

/src
    /Solution.sln
    /SolutionFolder
        /Project1
        /Project2
        /etc..
/lib
    /Moq
        moq.dll
        license.txt
    /Yui-Compressor
        yui.compressor.dll
/tools
    /ILMerge
        ilmerge.exe

您会注意到,我没有在源文件夹中保留外部库。我对使用NuGet也很感兴趣,但不希望在源文件夹内使用这些外部库。NuGet是否有一个设置来改变所有包加载到的目录?


当前回答

最一致的方法是使用nuget config显式设置配置:

nuget config -set repositoryPath=c:\packages -configfile c:\my.config

https://learn.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior#changing-config-settings

其他回答

我又发现了一个小秘密。(这可能是最基本的,有些人还没有提到,但它对我的解决方案很重要。)“packages”文件夹最终与你的.sln文件在同一个文件夹中。

我们移动了.sln文件,然后固定了其中的所有路径,以找到各种项目,瞧!我们的packages文件夹最终位于我们想要的位置。

VS 2017更新:

看起来人们在Nuget团队终于开始使用Nuget自己,帮助他们找到和修复几个重要的东西。所以现在(如果我没有弄错的话,因为还没有迁移到VS 2017)下面的内容不再需要了。您应该能够将“repositoryPath”设置为本地文件夹,并且它将工作。甚至可以将其保留为默认恢复位置,从解决方案文件夹移到机器级。我还是没有自己测试

VS 2015及更早

只是给其他答案一个提示(特别是这个):

NuGet包文件夹的位置可以通过配置来更改,但是VisualStudio仍然相对地引用此文件夹中的程序集:

<HintPath>..\..\..\..\..\..\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>

为了解决这个问题(直到有更好的解决方案),我使用subst命令创建了一个指向Packages文件夹新位置的虚拟驱动器:

subst N: C:\Development\NuGet\Packages

现在当添加一个新的NuGet包时,项目引用使用它的绝对位置:

<HintPath>N:\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>

注意:

这样的虚拟驱动器将在重新启动后删除,因此请确保您处理了它 不要忘记替换项目文件中现有的引用。

这些答案都不适合我(Nuget 2.8.6),因为缺少一些提示,我会尝试在这里添加它们,因为它可能对其他人有用。

阅读以下资料后: https://docs.nuget.org/consume/NuGet-Config-Settings https://github.com/NuGet/Home/issues/1346 看来

To make working Install-Package properly with different repositoryPath you need to use forward slashes, it's because they are using Uri object to parse location. Without $ on the begining it was still ignoring my settings. NuGet caches config file, so after modifications you need to reload solution/VS. I had also strange issue while using command of NuGet.exe to set this option, as it modified my global NuGet.exe under AppData\Roaming\NuGet and started to restore packages there (Since that file has higher priority, just guessing).

如。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositorypath" value="$/../../../Common/packages" />
  </config>
</configuration>

你也可以使用NuGet命令来确保语法是正确的,就像这样:

NuGet.exe config -Set repositoryPath=$/../../../Common/packages -ConfigFile NuGet.Config

Visual Studio 2019和Nuget 5.9

打开%AppData%\NuGet文件夹,打开现有的NuGet。配置文件。编辑repositoryPath键并设置新的目标。

<配置> <add key=“存储路径”值=“D:\”鸡块\ packages”- > < /配置>

在环境变量中编辑系统变量NUGET_PACKAGES并设置新的目标

重启VS.不需要放金币。配置文件在每个解决方案。

最一致的方法是使用nuget config显式设置配置:

nuget config -set repositoryPath=c:\packages -configfile c:\my.config

https://learn.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior#changing-config-settings