是否可以告诉NuGet在哪里存储解决方案的包?

时间:2010-12-15 09:30:11

标签: visual-studio nuget

我一直无法找到这个问题的答案。我以前使用Nu并且能够识别“宝石”的安装位置。例如,我喜欢保持我的项目结构:

MyProject
    |-MyProject.build
    |-MyProject.sln
    |-doc
    |-lib
    |  |- ... my packages/gems ...
    |-sql
    |-src
    |  |-app
    |  |-test
    |-tools

正如您所看到的,我希望为我的解决方案中使用的第三方库保留一个“lib”文件夹。使用Nu,在我的项目的根目录中,我可以简单地使用命令:

nu install log4net --location=lib

这样做会获取所请求的包并将其放在我的“lib”文件夹中以便稍后进行参考。

那么,使用VS.NET中的“包管理器控制台”是否可以实现?我还需要使用其他方法吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:9)

Sebastiens的帖子都不错,但我真的非常关心包裹的去向。  Nuget(或任何包管理员)不应该认为它最了解。

它不应该假设解决方案==完整的源代码树。澄清一下:我的源代码树包含80多个解决方案,所有这些解决方案都位于不同的位置,相对于解决方案文件夹的软件包存储库导致所有软件包的80多个克隆,这很慢且浪费。

现在(nuget 1.3)一个未记录的hack是将一个nuget.config文件放在你的解决方案旁边,其中包含一个相对于repo的路径,就像这样

<settings>
    <repositoryPath>..\..\lib</repositoryPath>
</settings>

这对你来说可能有用,也可能不适用,因为它是黑客。

答案 1 :(得分:4)

Sebastien Lambla最近写了一篇关于OpenWrap的blog post,但也谈到了NuGet。在其中,他认为要求将包装放在其他地方的人真的在问错误的问题:

  

当问题“我可以改变包去的地方”时,通常潜在的真实问题是两个中的一个:“我希望他们在/ lib中使用其他传统库”,或者“在我的公司环境中我不想签入所有依赖项,因为我不关心xcopy部署“。

然后继续解释你的包管理器“拥有”库是如何与你所依赖的其他库不同的那种野兽。