[英]Compilation error only in Visual Studio Code
我下载了.NET SDK for the Froala WYSIWIG HTML Editor
的.NET SDK for the Froala WYSIWIG HTML Editor
。 下载链接可在此处获取: https : //www.froala.com/wysiwyg-editor/docs/sdks/dotnet
只需下载zip,解压缩并打开它。
在Visual Studio 2019中编译解决方案时,我没有任何错误/警告。 在运行时也没问题。
在Visual Studio Code中打开完全相同的解决方案时,即使编译成功,编译时也会遇到一些错误( dotnet build
)。 在运行时没问题。
错误主要是引用类型'HttpContext'声明定义'System.Web',但未找到
如前所述这里可能是靶向2个不同.NET framework版本的问题。
解决方案(.sln)的组成如下:
我无法在编译时找到这个恼人的错误警告的解决方案。
更新1
src项目的目标是net472;netstandard2.0
demo-core项目针对的是.NET Core 2.0
更新2
我终于成功摆脱了编译错误。 我只是从src projet的目标框架中删除net472
,并立即编译错误消失。
我得到的结论是什么? 此修改如何影响Visual Studio Code以及为什么在Visual Studio 2019下不需要这样做。抱歉,这对我来说很奇怪。
从该站点下载的所有原始源(并且还在github提交历史中验证)都没有引用net472; 他们改为引用net471。 我怀疑该解决方案首先在Visual Studio 2019中尝试过,并且没有安装.NET SDK 4.7.1目标包,尝试重新定位SDK 4.7.2。
执行此操作并在VS Code中重新打开源代码后,Omnisharp扩展会尝试编译第一个目标框架,因为对多个目标框架的支持不足 。 在这种情况下,src项目的第一个发现是net472(这很重要)。 请注意,翻转目标框架的顺序没有任何影响。
错误“引用类型'HttpContext'声明定义'System.Web',但未找到”现在是直接解释。 如果我们在src / Image.cs中查找示例,我们将看到以下using语句:
using System;
using System.IO;
using System.Collections.Generic;
#if netcore
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.StaticFiles;
#else
using System.Web;
#endif
如果使用net472由Omnisharp服务器“编译”src项目,它将导入System.Web.HttpContext
。 针对netcore2.0编译的Controllers / FoalaApiController.cs中的演示核心项目改为引用Microsoft.AspNetCore.Http.HttpContext
。 这些显然不匹配。
如果Omnisharp为src项目选择了正确的netcore2.0目标,那么这些目标就会匹配。 它没有让你看到Omnisharp报告的这些错误。 您没有从dotnet build或VS2019中看到这些错误,因为它们正确地解析了src项目的正确目标框架。
这是我下载源代码时的第一次经历。 目前尚不清楚您正在使用的.NET Core SDK版本。 当我构建源代码时,我看到.NET Core SDK 2.2.100出现以下错误。
错误NU1003:PackageTargetFallback和AssetTargetFallback不能一起使用。 从项目环境中删除PackageTargetFallback(不建议使用)引用。
此错误的修复很简单:从.csproj文件中删除PackageTargetFallback
声明。 在此之后,项目使用dotnet build
编译时没有错误/警告。
我最初没有在VS Code中看到任何其他错误,因为我也没有安装.NET SDK 4.7.1目标包。 因此,Omnisharp只能使用netstandard2.0编译src项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.