Ошибка в кодовом ядре VS Code dotnet core С#: "Тип или имя пространства имен" Система "не удалось найти", но сборка завершается успешно
При попытке работать с кодом Visual Studio в приложении С# DotNet Core MVC у меня возникает много проблем с получением визуального кода студии для работы. У него возникают проблемы с поиском чего-либо, связанного с С#, отмечая даже "Использование системы"; как недействительный, заявив, что он не может его найти.
Однако, когда я запускаю сборку dotnet, она преуспевает без предупреждений или ошибок и запускается проект.
Мой проект.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"
}
}
}
Есть идеи? Я действительно вытаскиваю свои волосы с этим.
Ответы
Ответ 1
Иногда С# для кода Visual Studio (работает от OmniSharp) запутывается.
Попробуйте перезапустить OmniSharp. Вот два способа:
- Закройте и заново откройте код Visual Studio или
- Откройте командный поддон и введите
Restart Omnisharp
.
OmniSharp имеет тенденцию смущаться, если мы восстанавливаем зависимости из командной строки, а не из кода Visual Studio.
Ответ 2
Хорошо, я понял, что вызывает проблему. Я ссылался на неправильный импорт для основной части файла 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" есть. Я буду продолжать смотреть на то, почему для этого вопроса, но я отправляю этот ответ сейчас, если кто-то другой справляется с этой проблемой.
Ответ 3
В VS Code на Fedora 30 с .NET Core 3.0 у меня возникла та же проблема после создания рабочего проекта с новым рабочим dotnet
Первая проблема заключалась в том, что сервер OmniSharp не нашел папку Sdks, и решение было включить эту строку в ~/.bashrc:
export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"
затем перезапустите VS Code, но расширение С# покажет мне несколько сообщений вроде:
Тип или имя пространства имен "Коллекции" не существует в пространстве имен "Система" (отсутствует ссылка на сборку?)
Решение было, во-первых, в терминале запустить:
dotnet build
затем перезапустите сервер OmniSharp с помощью палитры команд (Ctrl + Shift + P):
OmniSharp: Restart OmniSharp
затем я перезапускаю VS Code и расширения С#, и все зависимости работают нормально.
Ответ 4
Другая возможная причина получения ошибок, связанных с использованием системы, - это сохранение каталога .vscode
в репозитории git (я не добавляю его в .gitignore
).
Открытие папки решения с помощью VSCode может создать проблемы с несколькими версиями, как описано выше, и может быть решено простым удалением каталога .vscode
.