【问题标题】:Is it possible to tell NuGet where to store packages for a solution?是否可以告诉 NuGet 在哪里存储解决方案的包?
【发布时间】:2011-05-25 19:24:58
【问题描述】:

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

我的项目 |-MyProject.build |-我的项目.sln |-文档 |-库 | |- ...我的包裹/宝石... |-sql |-src | |-应用 | |-测试 |-工具

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

新安装 log4net --location=lib

这样做会抓取请求的包并将其放在我的“lib”文件夹中以供以后参考。

那么,这可以在 VS.NET 中使用“包管理器控制台”吗?我必须使用其他方法吗?感谢您的帮助!

【问题讨论】:

  • Sebastien Lambla 最近的这篇博文可能值得一读:codebetter.com/sebastienlambla/2010/12/11/…
  • @Damien_The_Unbeliever 你想发表你的评论作为答案吗?这基本上回答了我的问题。
  • 这是另一个可爱的非答案,假设开发人员可以控制依赖项可以驻留的位置。我正在寻找同样的东西 - 我正在使用 Unity3D。除非依赖项位于特定文件夹中,否则不会被看到。

标签: visual-studio nuget


【解决方案1】:

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

当问题“我可以更改包的去向”时,通常是基本的、真正的问题之一是:“我希望它们与我的其他传统库一起在 /lib 中”或“在我的公司环境中,我不想签入所有依赖项,因为我不关心 xcopy 部署”。

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

【讨论】:

    【解决方案2】:

    Sebastiens 的帖子很好,但我真的很关心包裹的去向。 Nuget(或任何包管理器)不应假定它最了解。

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

    目前(nuget 1.3)一个未记录的黑客是在您的解决方案旁边放置一个 nuget.config 文件,其中包含指向 repo 的相对路径

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

    这可能适合您,也可能不适合您,因为它是一种黑客攻击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2013-03-20
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      相关资源
      最近更新 更多