Error in VS Code dotnet core C#: “The type or namespace name 'System' could not be found”, but build succeeds

*爱你&永不变心* 提交于 2020-02-26 06:46:56

问题


When trying to work with Visual Studio Code on a C# DotNet Core MVC application, I am having a lot of trouble getting visual studio code to work. It is having trouble finding anything related to C#, marking even 'Using System;' as invalid, saying it can't find it.

However, when I run dotnet build, it succeeds with no warnings or errors and the project runs.

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

Any ideas? I'm really pulling my hair out with this one.


回答1:


Sometimes C# for Visual Studio Code (powered by OmniSharp) becomes confused.

Try restarting OmniSharp. Here are two ways:

  1. Close and re-open Visual Studio Code, or
  2. Open the Command Pallet and type Restart Omnisharp.

OmniSharp tends to become confused if we restore dependencies from the command line instead of from within Visual Studio Code.




回答2:


Ok, I've figured out what was causing the issue. I was referencing the wrong imports for the framework part of the project.json file.

This:

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

Should be this:

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

I'm on a windows 8 machine, and for some reason "dnxcore50" isn't valid, but "dotnet5.6" and "portable-net45+win8" is. I'm going to keep looking at the why for this question, but I am posting this answer now in case someone else is dealing with this problem.




回答3:


In VS Code on Fedora 30 with .NET Core 3.0 I had the same issue after create a worker project with dotnet new worker

First issue was that OmniSharp server didn't find the Sdks folder and the solution was include this line to the ~/.bashrc:

export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"

then restart VS Code, but C# extension show me some messages like:

The type or namespace name 'Collections' does not exist in the namespace 'System' (are you missing an assembly reference?)

the solution was, first, in the terminal run:

dotnet build

then restart the OmniSharp server using the command palette (Ctrl+Shift+P):

OmniSharp: Restart OmniSharp

then I restart VS Code and the C# extensions and all dependencies are working fine.




回答4:


Another possible cause of getting errors regarding "using System" is storing the .vscode directory in the git repository (my not adding it to .gitignore).

Opening the solution folder with VSCode can create cross version problems like the above and can be solved simply by deleting the .vscode directory.




回答5:


This issue has been answered at: https://github.com/OmniSharp/omnisharp-vscode/issues/2147. (It's a long thread. Scroll all the way to the bottom.)



来源:https://stackoverflow.com/questions/41799214/error-in-vs-code-dotnet-core-c-the-type-or-namespace-name-system-could-not

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!