2016-04-11 2 views
2

У меня есть пакет NuGet, который в настоящее время предназначен для .NET 4.5. Следующая версия вместо этого предназначена для .NET 4.5.2. Я не заинтересован в поддержке обеих версий фреймворка (эти пакеты потребляются только внутри страны), но я хочу, чтобы потребители поняли, что им нужно ориентироваться на 4.5.2. Прямо сейчас, кажется, что NuGet позволит проекту 4.5 установить мой пакет, но он будет no-op (так как для net45 нет DLL для установки).Как плавно обновить targetFramework для пакета NuGet

Мой вопрос: что я могу сделать, чтобы улучшить этот опыт? В идеале я бы хотел, чтобы установка завершилась неудачно, когда targetFramework ошибочно. Если не считать этого, я бы согласился на что-то вроде сообщения об ошибке.

+0

Вы пытались добавить сборку в каталог lib \ net452, чтобы она включалась только в проект, предназначенный для NET 4.5.2? –

+0

@MattWard это то, что он делает по умолчанию. Однако, когда я устанавливаю этот пакет в проекте 4.5, он не жалуется; он просто молчал. – ChaseMedallion

+0

Это звучит как ошибка нугета. Я не ожидал, что nuget позволит это. –

ответ

0

Для этого вам необходимо убедиться, что все в вашем пакете нацелено на новую версию. Затем NuGet завершит установку с этим сообщением:

Не удалось установить пакет 'XXX'. Вы пытаетесь установить этот пакет в проект, целью которого является «.NETFramework, Version = v4.5», но пакет не содержит ссылок на сборки или файлов содержимого , которые совместимы с этой инфраструктурой. Для получения дополнительной информации, контакт пакет автор

Моя проблема в том, что даже думал, что моя DLL целевой net452, у меня были другие элементы в моем nuspec файл (е. Г. Содержание файлов), которые по-прежнему ориентированы net45. NuGet интерпретирует это, поскольку мой пакет является многоцелевым и, таким образом, позволяет выполнить установку в проекте .NET 4.5 (тихо пропуская шаг добавления ссылки на DLL).