繁体   English   中英

仅在Visual Studio代码中编译错误

[英]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)的组成如下:

  • src项目
  • demo-core项目(引用src项目)<---设置为默认项目
  • 演示项目(引用src项目)<----未使用因为我使用了demo-core

我无法在编译时找到这个恼人的错误警告的解决方案。

更新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.

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