Рекурсивно включать Nuget DLL через Gitignore - PullRequest
10 голосов
/ 11 сентября 2011

Я использую GIT с новым проектом ASP.NET MVC. У меня есть строка в моем файле gitignore, чтобы игнорировать dll

*.dll

Я хотел бы добавить что-то вроде следующего, чтобы включить (т.е. не игнорировать) библиотеки DLL в мою папку с пакетами NUGET

  !/packages/*.dll

Проблема, с которой я сталкиваюсь, состоит в том, что не все пакеты nuget создаются одинаково и, в зависимости от рассматриваемого пакета, библиотеки DLL могут быть вложены в произвольное количество уровней в иерархии пути. Похоже, мне просто нужно рекурсивное решение в духе:

!/packages/**/*.dll

!/packages/**/*

Я еще не нашел решение, которое будет работать через mysysgit (или любой дистрибутив git для windows).

Кто-нибудь знает способ заставить эту работу ???

Ответы [ 2 ]

19 голосов
/ 11 сентября 2011

Оставьте свой верхний уровень gitignore в покое, оставив в нем *.dll.

Создайте еще один .gitignore файл в каталоге пакетов и поместите в него !*.dll.

9 голосов
/ 11 сентября 2011

Другой вариант, который следует учитывать, это НЕ включать ваши библиотеки NuGet в ваш репозиторий, а загружать их только при первом создании проекта. Это то, что мы делаем со всеми нашими зависимостями NuGet.

UPDATE

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 достаточно умен, чтобы видеть, что они уже существуют в правильной версии, и пропускает их.

...