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

/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。在解决方案文件所在目录下配置,包含以下内容:

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

'packages'将是还原所有包的文件夹。

关闭Visual studio解决方案并重新打开。

其他回答

Visual Studio 2019和Nuget 5.9

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

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

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

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

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.config”的文件。 把那个文件加到我的解决方案文件夹里了

这对我不起作用:

<configuration>
  <config>
    <add key="repositoryPath" value="..\ExtLibs\Packages" />
  </config>
  ... 
</configuration>

这对我来说确实有用:

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <repositoryPath>..\ExtLibs\Packages</repositoryPath>
</settings>

刚刚更新了Nuget 2.8.3。要更改已安装包的位置,我启用了从右键单击解决方案恢复包。NuGet编辑。配置并添加这些行:

  <config>
    <add key="repositorypath" value="..\Core\Packages" />
  </config>

然后重新构建解决方案,它将所有包下载到我想要的文件夹,并自动更新引用。

Visual Studio 2015上Nuget 3.2的解决方案是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="../lib" />
    </config>
</configuration>

为父文件夹使用正斜杠。 将上述文件(nuget.config)保存在解决方案文件夹中。

参考资料可在此查阅