繁体   English   中英

为什么我的 ASP.NET 网站项目在我告诉它面向 4.8 时面向 .NET Framework 4.6.1?

[英]Why is my ASP.NET Web Site project targeting .NET Framework 4.6.1 when I have told it to target 4.8?

我们有一个大型 Visual Studio 2015 解决方案,其中包含多个网站(而不是Web 应用程序)项目和数十个业务逻辑 DLL 项目。 我们的目标是 .NET Framework 4.6.1,但我现在已经在本地 PC 上安装了 Visual Studio 2019 并将所有项目重新定位到 4.8

当我使用我们现有的 PowerShell/MSBuild 脚本构建解决方案时,所有 DLL 都成功构建,但在我们的第一个网站项目中出现以下错误:

C:\\[omitted]_MyWebSite.metaproj:警告 MSB3274:无法解析主要引用“C:\\[omitted]\\MyDLL.dll”,因为它是针对“.NETFramework,Version=v4.8”框架构建的。 这是比当前目标框架“.NETFramework,Version=v4.6.1”更高的版本。

然后,当编译器在站点上找到一些尝试使用 DLL 的代码时:

c:\\[omitted]MyController.cs(6): 错误 CS0246:找不到类型或命名空间名称“MyDLL”(您是否缺少 using 指令或程序集引用?)[C:\\[omitted]_MyWebSite。元项目]

(这只是一个示例引用错误。事实上,所有 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

看起来更新网站项目的 web.config 文件是不够的。 您还必须更新属性页中的目标。 因此,在解决方案资源管理器中,找到您的网站项目,右键单击 > 属性页 > 构建 > 目标框架 > 更改为 .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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM