2013-01-25 7 views
5

Мы энтузиасты NuGet, как для встроенных, так и для сторонних пакетов.Отсутствие пакета вызывает восстановление пакета NuGet с ошибкой

Недавно мы включили функцию восстановления пакета NuGet в некоторых из наших проектов сборки, чтобы уменьшить количество двоичных файлов, которые мы передаем исходному контролю, но мы сталкиваемся с проблемой.

Мы видим, что Visual Studio занимает очень много времени, и, как только она началась (это может занять более получаса), последующая сборка также занимает много времени. Пока это происходит, вы можете увидеть много дочерних процессов NuGet, которые появляются и умирают в проводнике процессов.

Мы обнаружили, что если версия пакета, на которую ссылается файл package.config, недоступна ни из одного из настроенных источников пакетов (возможно, это старая версия внутреннего пакета, и кто-то полезный был очищен наше локальное репо), кажется, что NuGet и Visual Studio попадают в какой-то бесконечный (или, по крайней мере, долговременный) цикл повтора.

Если запустить команду NuGet установки из командной строки, мы получаем обратно ошибку

>.nuget\NuGet.exe install project\packages.config -o packages 
Unable to find version '1.0.0.1' of package 'my.internal.package'. 

, но это выглядит, как будто это не потребляется правильно Visual Studio/NuGet.

  • Выполняет ли NuGet свои действия в любом месте?
  • Можем ли мы ограничить NuGet восстановления повторных попыток или тайм-аутов (возможно, в файле nuget.targets?)
  • Это выглядит так, как будто не используется семантическая версий NuGet, потому что в нашем сценарии выше 1.0.0.2 доступен из репозитория , можно ли это включить?
+0

Можете ли вы поделиться командами для создаваемых процессов nuget. Вы можете получить это из проводника процессов или диспетчера задач. Получёт лучшее представление о том, что порождает эти процессы. – allen

ответ

2

Это, кажется, похож на этот вопрос http://nuget.codeplex.com/workitem/2970 временный обходной путь работал для меня, чтобы открыть nuget.targets и заменить
< - Мы должны обеспечить пакеты восстанавливаются до сборки решимостью ->
< ResolveReferencesDependsOn Condition = "$ (RestorePackages) == 'true'">
RestorePackages;
$ (ResolveReferencesDependsOn);
</ResolveReferencesDependsOn>
с

< Состояние BuildDependsOn = "$ (RestorePackages) == 'истинный'">
RestorePackages;
$ (BuildDependsOn);
</BuildDependsOn>

Закрыть и перезарядка решение в VS. это сделало бы сборку зависеть от пакетов восстановления вместо решения сборки, что, похоже, решит проблему.

надеюсь, что это поможет.

0

Во-первых, ваше управление версиями не соответствует тому, что nuget рекомендует, т.е. 1.2.3. Таким образом, вы должны попробовать добавить в версию 1.0.1, чтобы убедиться, что это устраняет проблему.

  • Выполняет ли NuGet свои действия в любом месте?

Вы можете использовать флаг -verbosity с вашей командной строкой «nuget install», чтобы получить дополнительную информацию. Детали также доступны в окне вывода. Выберите «диспетчер пакетов» из раскрывающегося списка. Для получения дополнительной пользы Devenv/Журнал

  • Можем ли мы ограничить NuGet восстановления повторных попыток или тайм-аутов (возможно, в nuget.targets файл?)

не знаю любого пути сюда.

  • Это выглядит так, как будто семантическая версий NuGet является не используются, потому что в нашем выше сценарий 1.0.0.2 доступен из репозитория, может это быть включено?

Это может быть достигнуто путем проверки «автоматической проверки обновлений» в диспетчере пакетов-> options->? Посмотрите, ограничивает ли ваш пакет.config версию 1.0.0.1

Смежные вопросы