Создание библиотеки для разных версий.NET

У меня есть библиотека, которую я использовал для сборки на разных версиях.NET, выполняя командную строку, например: msbuild x.csproj /p:TargetFrameworkVersion=v4.6.2 ... несколько раз с другим значением для свойства TargetFrameworkVersion. Теперь я хотел добавить.NET 4.7.1 к сценарию. Сборка для 4.7.1 завершается успешно, но следующие сборки терпят неудачу с таким сообщением:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ NuGet \ 15.0 \ Microsoft.NuGet.targets (186,5): ошибка: Ваш проект не ссылается на ".NETFramework,Version=v4.6.2"рамки. Добавьте ссылку на ".NETFramework, Version = v4.6.2" в разделе "frameworks" вашего project.json, а затем повторно запустите восстановление NuGet. [X.csproj]

Я много раз искал это сообщение, но не смог найти никаких полезных решений, которые бы исправили мой скрипт сборки. Наиболее близким к решению было это. Но удаление project.assets.json перед каждым msbuild не помогло. По-видимому, существует проблема с восстановлением пакетов NuGet для разных версий.NET. Можете ли вы предложить решение.

1 ответ

ОК, я закончил тем, что добавил вручную строку, подобную этой <TargetFrameworkVersions>net452;net462;net471</TargetFrameworkVersions> в первом элементе PropertyGroup файла проекта. А затем изменить (не удалять) файл project.assets.json, добавив разделы для различных целевых версий.NET. Это утомительная работа, и я могу вообразить, что это становится болью в хвосте для нескольких проектов со многими версиями. Я сохранил копию файла где-то в проекте и добавил его в репозиторий, чтобы, если он был восстановлен VS - я мог легко восстановить его.

Если вы можете придерживаться только одной версии (наименее распространенного знаменателя) - она ​​вам не нужна. Вот мой файл project.assets.json для очень простой структуры и минимального количества проектов зависимостей, опубликованных в NuGet для.NET 4.5.2, 4.6.2 и 4.7.1. Будем надеяться, что команда VS найдет лучший способ сделать все это в будущем.

Другие вопросы по тегам