2015-09-25 13 views
1

Хорошо, я хочу проверить свои зависимости в исходном элементе управления. Многие люди будут возражать против этого по разным причинам, однако это не то, что я ищу в этом вопросе.Проверка файлов .nupkg в Source Control - как восстановить на сборке?

Примите мои требования, что я хочу, чтобы мои зависимости находились в контроле источника.

Я использую пакеты NuGet, поэтому у меня есть папка packages в корне моего решения. Каждая папка в пакетах содержит файл .nupkg вместе с извлеченным содержимым этого пакета (двоичные файлы, xml и т. Д.).

Поскольку файл .nupkg - это сжатое содержимое пакета, мне нет смысла проверять его вместе с распакованным содержимым. Я просто хочу проверить файлы .nupkg и восстановить их во время процесса сборки. Здесь и лежит проблема. NuGet при восстановлении только проверок наличия файла .nupkg, и если он обнаружит, что пакет уже установлен, он не распаковывает его.

Единственный способ найти эти файлы - запустить nuget.exe install и указать файл packages.config конкретного проекта и использовать опцию -OutputDirectory {solutionDir}\packages.

например.

nuget.exe install {solutionDir}\{projectDir}\packages.config -OutputDirectory {solutionDir}\packages

Но это работает только на уровне проекта, а не на уровне решения. Поэтому мне придется создать сценарий для этого для каждого проекта в решении.

Мне бы хотелось положиться на nuget.exe restore MySolution.sln, но он обнаруживает файлы .nupkg и не распаковывает их.

У кого-нибудь есть более простой способ восстановить все пакеты NuGet для решения, если файлы .nupkg присутствуют, но не распакованы?

+0

Образы, которые вам нужны, вам нужно написать сценарий или консольное приложение, чтобы найти все файлы nupkg и извлечь их. – jrummell

+0

@jrummell Кажется странным, что восстановление NuGet не делает этого. Я чувствую, что есть вариант, который я просто пропустил, и это сделает это. Похоже, что я хочу проверить зависимости в исходном элементе управления, что я должен добавить их дважды, сжатый в файле nupkg, а также несжатое содержимое. Кто-то еще должен был столкнуться с этой проблемой? –

+0

Ну, нугет хочет, чтобы на самом деле предназначалось так, чтобы его использовали. Вы можете попробовать связаться с командой nuget и предложить это как запрос функции. – jrummell

ответ

0

Если вы не хотите загружать пакеты nuget из Интернета, просто добавьте их в отдельную папку с именем nuget_repo и зарегистрируйте эту папку в файле nuget.config как a package source. Проверьте как папку nuget_repo, так и nuget.config в исходный элемент управления вместе с вашими источниками.