У меня возникла аналогичная проблема, но с 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>
У меня сразу сработало, только потом, когда я внимательно прочитал, зачем он нам нужен и почему работает. Неожиданно нашел его в часть 2 раздела Перенос образца приложения WPF на .NET Core 3 в разделе Обеспечение продолжения сборки проекта .NET Framework. Здесь можно найти переменные BaseOutputPath
и BaseIntermediateOutputPath
msbuild, не уверен, хорошо ли они где-либо задокументированы.
person
moudrick
schedule
03.02.2020