我正在使用GIT和一个新的ASP.NET MVC项目。我的gitignore文件中有一行忽略dll
*.dll
我想在以下行中添加一些内容以包含(即不要忽略)我的NUGET包文件夹中的DLL
!/packages/*.dll
我遇到的问题是并非所有的nuget包都是同等创建的,并且根据所讨论的包,DLL可能在路径层次结构中嵌套任意数量的级别。似乎我只需要一个递归解决方案:
!/packages/**/*.dll
!/packages/**/*
我还没有找到一个可以通过mysysgit(或git的任何Windows发行版)工作的解决方案。
有没有人知道如何使这项工作?
答案 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足够智能,可以看到它们已经存在于正确的版本中并跳过它们。