Error in Visual Studio Code Dotnet Core C#: "The type or namespace name 'System' could not be found", but build succeeds

39,379

Solution 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.

Solution 2

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.

Solution 3

I'm using VS Code in a mac with OmniSharp and mono and the issue was gone after doing the following:

For MacOS and Linux users who have Mono installed, this means you will need to set omnisharp.useGlobalMono to never until a version of Mono ships with MSBuild 16.7.

Solution 4

If you get this error, you could be missing a package.

“The type or namespace name 'System' could not be found”

To add a package, you can run this command in the terminal:

dotnet add package

Example: Add Newtonsoft.Json NuGet package to a project:

dotnet add package Newtonsoft.Json

After that, go to the squiggly line, and add the missing reference by clicking on the lightbulb.

You can also install the Nuget Package Manager extension to find out what packages you need. See this answer to find out more:

Install a Nuget package in Visual Studio Code

Solution 5

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.

Share:
39,379
MStudley
Author by

MStudley

Updated on July 09, 2022

Comments

  • MStudley
    MStudley almost 2 years

    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 a 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.

  • MStudley
    MStudley over 7 years
    I did try to restart omnisharp, to no avail. I even tried re-installing the entire .net core SDK and Runtime. I think there's something funky with the project somewhere, but I can't see it. I wish I could debug omnisharp to tell me why it can't find System...
  • Shaiju T
    Shaiju T over 5 years
    Sometimes you have to SAVE ALL files in VS code before doing dotnet build.
  • Anton Toshik
    Anton Toshik almost 5 years
    I had an issue where a namespace that didn't exist kept popping up this helped.
  • felixbreuer
    felixbreuer almost 4 years
    perfect ! the environment did the trick for me :) thanks alot!
  • hEShaN
    hEShaN over 3 years
    I had worked for almost 4 hours on this problem and this was the only thing that worked for me. Thank you so much!
  • Vincent Gerris
    Vincent Gerris about 3 years
    Indeed, just like most microsoft products I suppose, it needs a restart of some kind. Too bad, VScode has potential, but these kind of actions make it useless. In fact, most code changes I make are not picked up, like they do for Java in IntelliJ or Eclipse. So better to use vim ;). thanks for the answer though, it worked. Note, handy to add command pallet shortcut is ctrol + shift + P.
  • Adam Klein
    Adam Klein almost 3 years
    yes the Restart OmniSharp after the build was key here