У нас есть большое решение Visual Studio 2015 с несколькими веб-сайтами (в отличие от Web Application) и десятки проектов DLL бизнес-логики. Мы нацеливались на .NET Framework 4.6.1, но теперь я установил Visual Studio 2019 на свой локальный компьютер и переназначил все проекты на 4.8.
Когда я создаю решение с использованием нашего существующего сценария PowerShell / MSBuild, все библиотеки DLL создаются успешно, но я получаю следующую ошибку, когда дело касается нашего первого проекта веб-сайта:
C: \ [опущено] _MyWebSite.metaproj: предупреждение MSB3274: основная ссылка «C: \ [опущена] \ MyDLL.dll» не может быть разрешена, поскольку она была создана на основе платформы «.NETFramework, Version = v4.8». Это более поздняя версия, чем текущая целевая платформа .NETFramework, Version = v4.6.1.
Затем позже, когда компилятор найдет код на сайте, который пытается использовать DLL:
c: \ [опущено] MyController.cs (6): ошибка CS0246: не удалось найти тип или имя пространства имен MyDLL (вам не хватает директивы using или ссылки на сборку?) [C: \ [опущено] _MyWebSite. metaproj]
(Это всего лишь образец ошибки ссылки. На самом деле, похоже, что все библиотеки DLL страдают от этой проблемы, где бы они ни использовались в проекте веб-сайта.)
Соответствующие строки в файле web.config сайта:
<location path="." inheritInChildApplications="false">
<system.web>
[omitted]
<httpRuntime targetFramework="4.8" requestValidationMode="2.0" maxRequestLength="10240" />
<compilation debug="true" strict="false" explicit="true" targetFramework="4.8">
Я использую следующий путь к MSBuild.exe:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\msbuild.exe -maxcpucount:1 -verbosity:detailed