当我告诉ASP.NET网站项目以4.8为目标时,为什么将它定位为.NET Framework 4.6.1?

时间:2020-03-03 20:29:43

标签: asp.net msbuild web-site-project .net-4.6.1 .net-4.8

我们有一个大型Visual Studio 2015解决方案,其中包含几个网站项目(与Web Application相反)和数十个业务逻辑DLL项目。我们的目标是.NET Framework 4.6.1,但是现在我已经在本地PC上安装了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]

(这只是一个示例参考错误。实际上,无论在Web站点项目中使用什么DLL,所有的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 :(得分:1)

似乎不足以为网站项目更新web.config文件。您还必须在属性页中更新目标。因此,在解决方案资源管理器中,找到您的Web站点项目,右键单击>“属性页”>“生成”>“目标框架”>更改为.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"