Reputation: 735
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.
Upvotes: 64
Views: 60888
Reputation: 433
If you are using the VS Code Extension 'C#' by Microsoft then try the following:-
For me doing the below two steps solved the issue:-
Go to File -> Preferences -> Settings
Then Ctrl+Shift+P
-> Developer: Reload window
Upvotes: 10
Reputation: 760
Adding the configuration "omnisharp.useModernNet": true
to the workspace settings.json solved the issue for me.
In my scenario I had a development environment with preinstalled Visual Studio 2017/2019 but the new .NET 6.0 was missing.
To overcome the missing of .NET 6.0 I set the variable omnisharp.useModernNet
to false
within the "User Settings (JSON)". A long time passed and I forgot about it...
Later I installed the .NET 6.0 SDK and created a new project. But with the useModernNet
set to false
vscode (OmniSharp) was unable to resolve the missing assemblys for the (now new) .NET 6.0 SDK.
Long stroy short: Setting the value to true
in my workspace settings.json solved the issue for me in this special case.
Upvotes: 0
Reputation: 212
Same issue happened to me lot of times ..
in my case i opened the visual studio code as admin
then run the teriminal command donet buid
if required Restart OmniSharp (ctrl +shift + p)
Then It's working fine !!!
Upvotes: 0
Reputation: 1552
In my case vscode showed this error only for one file. The problem was solved by adding the missing file to the Assembly-CSharp.csproj
I'm not sure when files are automatically added and when I do have to do it manually, but it solved this issue.
...
<ItemGroup>
<Compile Include="Assets/Scripts/data/MissingFile.cs" />
...
Upvotes: 0
Reputation: 11
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.
Upvotes: 1
Reputation: 52386
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
Upvotes: 1
Reputation: 771
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.
Upvotes: 20
Reputation: 1
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.
Upvotes: -1
Reputation: 735
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.
Upvotes: 1
Reputation: 141542
Sometimes C# for Visual Studio Code (powered by OmniSharp) becomes confused.
Try restarting OmniSharp. Here are two ways:
Restart Omnisharp
. OmniSharp tends to become confused if we restore dependencies from the command line instead of from within Visual Studio Code.
Upvotes: 145