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

У нас есть большое решение Visual Studio 2015 с несколькими проектами веб-сайтов (в отличие от веб-приложений ) и десятками проектов бизнес-логики c DLL. Мы нацеливались. NET Framework 4.6.1, но теперь я установил Visual Studio 2019 на свой локальный P C и переназначил все проекты на 4,8

Когда я строю решение с использованием нашего В существующем скрипте PowerShell / MSBuild все библиотеки DLL создаются успешно, но я получаю следующую ошибку, когда речь идет о нашем первом проекте веб-сайта:

C: \ [пропущено] _MyWebSite.metaproj: warning 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

1 Ответ

0 голосов
/ 04 марта 2020

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

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

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

на:

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