Почему мой проект веб-сайта ASP.NET нацелен на .NET Framework 4.6.1, когда я сказал, что он нацелен на 4.8?

У нас есть большое решение 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

person Jordan Rieger    schedule 03.03.2020    source источник


Ответы (1)


Похоже, недостаточно обновить файл web.config для проектов веб-сайтов. Вы также должны обновить цель на страницах свойств. Итак, в обозревателе решений найдите свой проект веб-сайта, щелкните правой кнопкой мыши> Страницы свойств> Сборка> Целевая платформа> перейдите на .NET Framework 4.8.

Это не зависит от файла web.config и привело к изменению моего файла .sln с:

ProjectSection(WebsiteProperties) = preProject
[...omitted...]
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.6.1"

to:

ProjectSection(WebsiteProperties) = preProject
[...omitted...]
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.8"
person Jordan Rieger    schedule 03.03.2020