2016-11-09 7 views
1

У меня есть несколько пакетов nuget, созданных и установленных на моем локальном сервере Nuget. Они отлично работают. Я не могу установить их без проблем. Но когда я создал еще один пакет и поместить его на сервер пакет установки всегда терпит неудачу с ошибкой:Ошибка установки пакета Nuget

Could not install package ... You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. 

Проект точно такой же: он использует ту же каркасную версию (4.5). Я создал еще один пакет с одинаковыми настройками и работает так, как ожидалось. Проект не ссылается ни на что, что требует других фреймворков. Фактически, все сборки, которые он использует, также используются в других пакетах.

nuspec - это то же самое, что и в других местах. Я попытался включить другие версии фреймворка, и это не помогло.

<file src="bin\Release\*.*" target="lib\net45\" /> 

Я проверил, что упаковано в полученный nupkg. Он имеет DLL в lib/net45. Я не нашел отличий от других пакетов.

Я полностью смущен. Почему пакеты для очень похожих проектов дают разные результаты.

Есть ли способ узнать, что является причиной ошибки: Ошибка установки. Откат ...

Виктор

+0

0 Какой тип nuget вы используете? У меня были сходные проблемы с ProGet. –

ответ

0

Ошибка означает «Этот проект .NET 4.5 и NuGet пакет, который вы пытаетесь установить, не содержит ничего для .NET 4.5». Похоже, что что-то не так. Итак, сначала давайте проверим пакет nuget.

Эта строка в файле *.nuspec:

<file src="bin\Release\*.*" target="lib\net45\" /> 

означает «копировать все из bin\Release и положить в в lib\net45 директории внутри архива пакета NuGet». Он не проверяет, действительно ли файлы в «bin \ Release» были скомпилированы против .NET 4.5. Он не проверяет, есть ли что-либо в «bin \ Release» вообще.

Шаг 1: Вам необходимо проверить проект, содержащий код для вашего пакета nuget (НЕ проект, который его использует), который вы фактически создаете для .NET 4.5. Например, вы можете проверить, что *.csproj содержат строку так:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

Если это нормально запустить чистый и построить, чтобы сделать новые библиотеки DLL. Убедитесь, что вы используете конфигурацию «Release», а не «Debug» случайно.

Шаг 2: В проекте, который должен потреблять ваш пакет nuget, проверьте, действительно ли dll (ы), сделанные на шаге 1., на самом деле ОК. Вы можете добавить ссылку на dll вручную в обход nuget (Ссылки -> Добавить ссылку -> Обзор и выбрать dll, сделанные на шаге 1). Если это сработает, вы знаете, что ваши DLL в порядке, и проблема заключается в том, что касается упаковки nuget.

Шаг 3: Если шаги 1 и 2 были в порядке, проверьте, как вы упаковываете и публикуете свой пакет nuget и проверяете фид nuget.Трудно сказать без подробностей о вашей конкретной среде, но есть много вариантов:

  • Возможно, ваш канал nuget отклоняет команду публикации nuget?
  • Возможно, вы используете неправильный номер версии и используете другую версию?
  • Возможно, вы нажимаете pkg с версией, которая уже существует, и канал не перезаписывает ее.
  • Возможно, ваш корм nuget возится с файлом pkg?
+0

Шаг 1 в порядке. Это уже проверено. Все проекты используют .Net 4.5. Шаг 2 тоже хорош. Я могу ссылаться на проект без проблем. Шаг 3 сложнее. Я проверил, что пакет в фиде содержит использование Nuget Package Explorer. Все выглядит правильно для меня. lib/net45 содержит правильные файлы. – victor

+0

Я изменил номер версии пакета, загрузил его, и он был установлен! Это странно. Похоже, что пакет кэшируется где-то, и VS не обновил его. Я подумал об этом и очистил все пакеты, которые использует решение, но это не помогло. Я продолжал получать неудачные установки, пока не получил более новую версию – victor

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