通过Gitignore递归地包含Nuget DLL

时间:2011-09-10 20:43:59

标签: asp.net-mvc git nuget gitignore

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

*.dll

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

  !/packages/*.dll

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

!/packages/**/*.dll

!/packages/**/*

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

有没有人知道如何使这项工作?

2 个答案:

答案 0 :(得分:19)

gitignore保留在其中,以保持最高级别*.dll

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

答案 1 :(得分:9)

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

<强>更新

Nuget现在处理这个问题,而无需手动创建自己的构建事件。请参阅此页面上的详细信息:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


原始答案:

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

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

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