当尝试在C#DotNet Core MVC应用程序上使用Visual Studio Code时,我在使Visual Studio代码工作时遇到了很多麻烦。它无法找到与C#相关的任何内容,甚至标记出使用系统;'无效,说无法找到它。
但是,当我运行dotnet build时,它会成功,没有警告或错误,项目就会运行。
我的project.json:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
},
"Microsoft.EntityFrameworkCore.Sqlite": "1.1.0",
"Microsoft.EntityFrameworkCore.Design": {
"version": "1.1.0",
"type": "build"
},
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0"
},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": "dnxcore50"
}
}
}
有什么想法吗?我真的用这个把头发拉了出来。
答案 0 :(得分:87)
有时,Visual Studio Code的C#(由OmniSharp提供支持)会变得混乱。
尝试重新启动OmniSharp。这有两种方式:
Restart Omnisharp
。 如果我们从命令行而不是从Visual Studio代码中恢复依赖关系,OmniSharp往往会感到困惑。
答案 1 :(得分:1)
好的,我已经弄明白是什么导致了这个问题。我引用了project.json文件的框架部分的错误导入。
这:
An error has occured:
应该是这样的:
object(Twilio\Exceptions\EnvironmentException)#101 (7) {
["message":protected]=>
string(0) ""
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
我在Windows 8机器上,由于某种原因" dnxcore50"不是有效的,但" dotnet5.6"和" portable-net45 + win8"是。我将继续关注这个问题的 why ,但我现在发布这个答案以防其他人正在处理这个问题。
答案 2 :(得分:1)
在带有.NET Core 3.0的Fedora 30上的VS Code中,在使用 dotnet new worker
创建工作器项目后,我遇到了相同的问题第一个问题是OmniSharp服务器找不到Sdks文件夹,解决方案是将此行包括在〜/ .bashrc 中:
export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"
然后重新启动VS Code,但是C#扩展向我显示了一些消息,如:
名称空间“系统”中不存在类型或名称空间名称“集合”(您是否缺少程序集引用?)
解决方案首先是在终端运行中:
dotnet build
然后使用命令面板(Ctrl + Shift + P)重新启动OmniSharp服务器:
OmniSharp: Restart OmniSharp
然后我重新启动VS Code和C#扩展,所有依赖项都可以正常工作。
答案 3 :(得分:1)
我在带有 OmniSharp 和 Mono 的 mac 中使用 VS Code,执行以下操作后问题就消失了:
对于安装了 Mono 的 MacOS 和 Linux 用户,这意味着您需要将 omnisharp.useGlobalMono 设置为从不,直到带有 MSBuild 16.7 的 Mono 版本发布。
答案 4 :(得分:0)
出现另一个有关“使用系统”的错误的可能原因是将.vscode
目录存储在git存储库中(我没有将其添加到.gitignore
中)。
使用VSCode打开解决方案文件夹会产生上述的跨版本问题,只需删除.vscode
目录即可解决。
答案 5 :(得分:0)
此问题的答案为:https://github.com/OmniSharp/omnisharp-vscode/issues/2147。 (这是一个长线程。一直滚动到底部。)
答案 6 :(得分:0)
如果收到此错误,则可能缺少包裹。
“找不到类型或名称空间名称'System'”
要添加软件包,可以在终端中运行以下命令:
dotnet add package
示例:将Newtonsoft.Json NuGet软件包添加到项目中:
dotnet add package Newtonsoft.Json
此后,转到弯曲的行,然后通过单击灯泡添加缺少的参考。
您还可以安装Nuget软件包管理器扩展,以查找所需的软件包。查看此答案以了解更多信息: