Ответ 1
Оставьте свой верхний уровень gitignore
один, сохранив *.dll
в нем.
Создайте еще один .gitignore
файл в каталоге пакетов и поместите в него !*.dll
.
Я использую GIT с новым проектом ASP.NET MVC. У меня есть строка в моем файле gitignore, чтобы игнорировать DLL
*.dll
Я хотел бы добавить что-то по строкам следующего, чтобы включить (то есть не игнорировать) библиотеки DLL в моей папке пакетов NUGET
!/packages/*.dll
Проблема, с которой я сталкиваюсь, заключается в том, что не все пакеты nuget создаются одинаково и, в зависимости от рассматриваемого пакета, DLL могут быть вложены в произвольное количество уровней в иерархии путей. Кажется, что мне просто нужно рекурсивное решение по строкам:
!/packages/**/*.dll
!/packages/**/*
Я еще не нашел решение, которое будет работать через mysysgit (или любое распределение окон из git).
Кто-нибудь знает, как это сделать?
Оставьте свой верхний уровень gitignore
один, сохранив *.dll
в нем.
Создайте еще один .gitignore
файл в каталоге пакетов и поместите в него !*.dll
.
Еще один вариант, который следует учитывать, НЕ включает в себя ваши DLL файлы 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 достаточно умен, чтобы видеть, что они уже существуют в правильной версии и пропускают их.