首页 文章

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

提问于
浏览
4

我一直无法找到这个问题的答案 . 我之前使用过Nu,并且有能力识别"gems"的安装位置 . 例如,我喜欢保持我的项目结构:

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 回答

  • 8

    塞巴斯蒂安·兰布拉最近写了一篇关于OpenWrap的blog post,但也谈到了NuGet . 在其中,他认为要求将包裹放在其他地方的人真的在问错误的问题:

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

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

  • 4

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

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

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

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

    这可能会或可能不会对你有用,因为它是一个黑客 .

相关问题