我们有一个大型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
答案 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"