Ошибка сборки при переходе между ветвями: ваш проект не ссылается на структуру ".NETFramework, Version = v4.7.2"

Мы используем Git, и у нас есть решение, нацеленное на полную сетевую структуру. Пару дней назад я начал переносить решение на ядро .net. К сожалению, что-то приходит, что заставило меня вернуться к ведущей ветке (у которой есть код для полной.NET-платформы). Всякий раз, когда я пытаюсь создать приложение, я получаю следующую ошибку:

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

Я попытался очистить пакеты nuget, выполнив сброс git, но ничего не помогает. Любая идея о том, что происходит?

Ответы

Ответ 1

У меня была похожая проблема при обновлении некоторых проектов с 4.6.2 до 4.7.2 - это произошло как для нашего решения ASP.Net Core, предназначенного для полной платформы, так и для нашего решения WPF.

Первоначально это были случайные проекты с такой ошибкой, другие проекты с почти одинаковым csproj работали нормально, а другие терпели неудачу. "Повторное восстановление NuGet" в сообщении также отправило меня по неверному пути (некоторые из этих проектов даже не имели ссылок на NuGet...)

Похоже, что проблема связана с папкой obj проектов, содержащей файл project.assets.json, я не уверен, когда это было сгенерировано - скорее всего, это реликты из прошлого, и очистка проекта не удаляет это. Файл указывает на предыдущий фреймворк, в моем случае 4.6.2 - ручное удаление папок bin/obj для каждого проекта, который не будет собираться, а затем повторная сборка разрешила эту ошибку для меня. Это также объяснило бы, почему, когда я клонировал репо для моего здравомыслия, это также построило хорошо

Ответ 2

Похоже, что у вас могут быть некоторые библиотеки, не совместимые с Core. Если Nuget ожидает/требует 4.7.2, то что-то, вероятно, все еще нацелено на него, как в вашем проекте, так и в библиотеке, которую я бы рискнул. Также объяснит, почему очистка пакетов Nuget и их восстановление не устраняет проблему, если пакет, который вы восстанавливаете, все еще нацелен на 4.7.2.

Соответствующая записка, вы уверены, что используете последнюю структуру проекта? Я заметил, что ваше сообщение об ошибке включает project.json, который устарел в пользу нового формата csproj; больше информации здесь, если это актуально. Я не знаю о ситуации, когда вы получите сообщение об ошибке project.json, и у решения не было project.json.