【问题标题】:Recursively include Nuget DLLs via Gitignore通过 Gitignore 递归包含 Nuget DLL
【发布时间】:2011-09-10 20:43:58
【问题描述】:

我在一个新的 ASP.NET MVC 项目中使用 GIT。我的 gitignore 文件中有一行忽略 dll

*.dll

我想按照以下内容添加一些内容,以在我的 NUGET 包文件夹中包含(即不要忽略)DLL

  !/packages/*.dll

我遇到的问题是,并非所有 nuget 包都是平等创建的,并且根据所讨论的包,DLL 可能嵌套在路径层次结构中的任意数量的级别。看来我只需要一个递归解决方案:

!/packages/**/*.dll

!/packages/**/*

我还没有找到可以通过 mysysgit(或任何 git 的 Windows 发行版)工作的解决方案。

有没有人知道一种方法来完成这项工作???

【问题讨论】:

    标签: asp.net-mvc git nuget gitignore


    【解决方案1】:

    *.dll 保留在其中,让您的顶级gitignore 保持独立。

    在 packages 目录中创建另一个 .gitignore 文件并将 !*.dll 放入其中。

    【讨论】:

      【解决方案2】:

      另一个要考虑的选项是不在存储库中包含 NuGet dll,而是仅在第一次构建项目时下载它们。这就是我们对所有 NuGet 依赖项所做的事情。

      更新

      Nuget 现在可以处理此问题,而无需手动创建您自己的构建事件。详情见本页:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


      原答案:

      我们将 NuGet.exe 应用程序放在我们解决方案下的工具文件夹中,然后将以下内容添加到我们的项目预构建事件中。

      "$(SolutionDir)Tools\NuGet.exe" install "$(ProjectDir)packages.config" -o "$(SolutionDir)Packages"
      

      我们第一次构建应用程序时,它会下载所有依赖项,但在后续构建中,NuGet 足够聪明,可以看到它们已经以正确的版本存在并跳过它们。

      【讨论】:

      • 这是一个有趣的解决方案 - 它为您解决了哪些问题?
      • 我想我将其视为不签入生成代码的扩展。我们在签入服务引用时遇到了许多问题,在修复该问题的同时,我们还尽可能多地摆脱了存储库中的外部依赖项。当时我们遇到了较大的二进制文件会减慢我们在 SVN 中的结帐速度的问题。我不确定这会是我们当前设置的问题,但我们还没有回去。
      • 更新:Nuget 通过 Nuget 包还原支持此 OOB。
      • 有趣的想法并在一定程度上看到了这一点,但对于自动化构建,并确保外部程序集存在以备将来使用(即,如果长时间不执行构建),您可能需要实际文件您在构建过程中使用它们进行了测试或使它们可用,而不依赖于 nuget 可用性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多