VS код IntelliSense не работает для Unity3d - PullRequest
2 голосов
/ 20 января 2020

Проблема: IntelliSense не работает для Unity, определяющих c методы и функции (т. Е. Update, FixedUpdate, Awake, et c.).

Он работает, однако, для не указанных в Unity методов c (т.е. IEnumerator, void, public, float, int, et c.) и для переменных Unity, определенных c (т. е. Gameobject, transform, camera, et c.) И пространства имен Unity Speci c (т. Е. UnityEngine, UnityEditor, Unity, et c.).

Я использую: Visual Studio Code 1.41, Unity 3d 2018.4.15f1 (у меня та же проблема при использовании 2019.2.x).

Я пробовал следующие решения безрезультатно:

  1. Использование разных версий. NET
  2. Удаленный файл vscode в проекте.
  3. Удаление и переустановка как Unity, так и Visual studio.
  4. Изменено <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion> до <TargetFrameworkVersion>(Currently installed version)</TargetFrameworkVersion>, но по умолчанию Unity автоматически возвращается к v4.7.1

Возможные проблемы:

  1. Файл sln, создаваемый проектом, читает

    Microsoft Visual Studio Solution File, Format Version 11.00
    # Visual Studio 2010
    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{B2B58FB2-4462-6B0C-A872-40DD957E5FE0}"
    EndProject
    Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
            Debug|Any CPU = Debug|Any CPU
            Release|Any CPU = Release|Any CPU
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
            {B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
            {B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
            {B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
            {B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Release|Any CPU.Build.0 = Release|Any CPU
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
            HideSolutionNode = FALSE
        EndGlobalSection
        GlobalSection(MonoDevelopProperties) = preSolution
            StartupItem = Assembly-CSharp.csproj
        EndGlobalSection
    EndGlobal
    

    По какой-то причине, sln Кажется, файл используется для Visual Studio 2010. Я не знаю, является ли это намеренным или это проблема.

  2. При попытке решения 4, как указано выше, Unity (или VS Код для всего, что я знаю) автоматически меняется. NET версия с того, что я вручную набрал до 4.7.1. У меня уже установлен 4.7.1, поэтому это может не быть проблемой.

Дополнительная информация:

Вот журнал omnisharp:

Starting OmniSharp server at 2020. 1. 20. 오후 9:08:43
    Target: c:\Users\stpau\New Unity Project\New Unity Project.sln

OmniSharp server started.
    Path: C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\OmniSharp.exe
    PID: 2232

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on Windows 6.2.9200.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 1 MSBuild instance(s)
            1: StandAlone 16.3 - "C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        MSBUILD_EXE_PATH environment variable set to 'C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin\MSBuild.exe'
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 16.3 - "C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin"
            CscToolExe = csc.exe
            CscToolPath = C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin\Roslyn
            MSBuildExtensionsPath = C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild
            MSBuildToolsPath = C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in 'c:\Users\stpau\New Unity Project'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[info]: OmniSharp.MSBuild.ProjectSystem
        Detecting projects in 'c:\Users\stpau\New Unity Project\New Unity Project.sln'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for 'c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in 'c:\Users\stpau\New Unity Project'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.EditorConfigWorkspaceOptionsProvider, Order: 200
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location 'c:\Users\stpau\New Unity Project' on host 8980.
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file 'c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Adding project 'c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Update project: Assembly-CSharp

Как я могу решить эту проблему? Я также задал этот вопрос на форумах Reddit и Unity, но безуспешно.

Ответы [ 3 ]

5 голосов
/ 18 февраля 2020

В последней версии VS Code и Omnisharp у меня возникла та же проблема, и я решил включить эту опцию в Unity:

Правка> Параметры> Внешние инструменты> Создать все файлы .csproj.

1 голос
/ 24 января 2020

Это не решение вашей проблемы, но я думаю, что с этим проблем вообще нет. К сожалению, пока что IntelliSense для VS Code не должен работать для Unity, определяющих c методы и функции, я верю в это.

В качестве обходного пути вы можете использовать Фрагменты кода Unity расширение , оно принесет некоторые методы для IntelliSense. Единственная проблема для меня заключается в том, что он использовал форматирование K & R, поэтому я сделал для этого свой собственный файл сниппета .

И, возможно, вы заметили, но если у вас уже есть некоторые определенные методы Unity в ваш сценарий, IntelliSense обнаружит их.

0 голосов
/ 24 апреля 2020

Что помогло мне, так это установить отсутствующий SDK разработчика, который был указан в консоли вывода кода VS (OmniSharp Log).

Там в моем случае было сказано: Net 4.6 отсутствует, после установка этой (не самой последней 4.8) Intelisense работала

https://dotnet.microsoft.com/download/dotnet-framework

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...