У меня возникла аналогичная проблема, но с v4.7.2
. А именно, я продолжал получать такое сообщение журнала сборки:
error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.
Несмотря на то, что это выглядело похоже, ни один из предложенных выше шагов не помог мне. Я продолжал видеть это сообщение после каждой сборки. Казалось, ничто не могло помочь.
На самом деле проблема была связана с тем, что из-за миграции мне пришлось поместить два проекта в одну папку кода. Один из них был нацелен на .Net Core , другой - на .Net Framework , оба ссылались на одни и те же стандартные библиотеки .Net. Судя по всему, они используют ту же obj
папку, в которую проекты Core помещают project.assets.json
файл. Собственно, именно этот файл мешает проекту Framework мешать его нормальной сборке. Кажется, даже если вы выполнили миграцию из packages.config в PackageReference ... что было рекомендовано как одно из возможных решений.
Вы можете попытаться решить проблему, поместив следующий фрагмент в файл проекта Framework:
<Project>
...
<PropertyGroup>
<BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
<BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
</PropertyGroup>
...
</Project>
У меня сразу сработало, только потом, когда я внимательно прочитал, зачем он нам нужен и почему работает. Я неожиданно нашел его во второй части документа « Миграция образца приложения WPF на .NET Core 3» в разделе «Убедитесь, что проект .NET Framework все еще строится ». BaseOutputPath
и BaseIntermediateOutputPath
переменные msbuild можно найти там, не уверен, хорошо ли они где-либо задокументированы.