错误VS代码dotnet核心C#:“无法找到类型或名称空间名称'系统',但构建成功

问题描述:

当试图在Visual Studio代码上使用C#DotNet核心MVC应用程序时,我有很多麻烦让视觉工作室代码工作。它很难找到与C#相关的任何东西,甚至标记为“使用系统”;作为无效,说它找不到它。错误VS代码dotnet核心C#:“无法找到类型或名称空间名称'系统',但构建成功

但是,当我运行dotnet构建,它成功没有警告或错误,项目运行。

我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" 
    } 
    } 
} 

任何想法?我真的用这个拉我的头发。

有时C#for Visual Studio代码(由OmniSharp提供支持)会变得困惑。

尝试重新启动OmniSharp。这里有两种方法:

  1. 关闭并重新打开Visual Studio代码,或
  2. 打开命令托盘和类型Restart Omnisharp

如果我们从命令行而不是从Visual Studio代码中恢复依赖关系,OmniSharp往往会变得困惑。

+3

我确实尝试重新启动omnisharp,无济于事。我甚至尝试重新安装整个.net核心SDK和Runtime。我觉得这个项目在某个地方有点怪,但我看不到它。我希望我可以调试omnisharp告诉我为什么它找不到系统... – MStudley

好吧,我已经找出了导致问题的原因。我为project.json文件的框架部分引用了错误的导入。

此:

"frameworks": { 
    "netcoreapp1.1": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.1.0" 
     } 
     }, 
     "imports": "dnxcore50" 
    } 
    } 

应该是这样的:

"frameworks": { 
    "netcoreapp1.1": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    } 

我在Windows 8机器,出于某种原因, “dnxcore50” 是无效的,但“dotnet5.6 “和”portable-net45 + win8“是。我将继续寻找为什么这个问题,但我现在发布这个答案,以防别人正在处理这个问题。