Visual Studio Code에서 dotnet 3.x 기반 프로젝트를 열면 오류 CS0246 및 CS0518이 발생하는 문제 해결

3788 단어 Mac.NETCoreVSCode

소개



프로젝트의 TargetFramework에 netcoreapp3.0 또는 netcoreapp3.1을 지정한 경우 Visual Studio Code에서 프로젝트를 로드하면 CS0246 및 CS0518이 발생하는 문제를 해결합니다.



omnisharp-vscode의 대응 방법 thread



아래의 스레드를 보면 필요한 것은 써 있습니다.
  • Did not find 'Microsoft.NETCore.App' in lock file. · Issue #3314 · OmniSharp/omnisharp-vscode
  • Omnisharp not working on Mac · Issue #3407 · OmniSharp/omnisharp-vscode

  • 비망록으로서 대응 방법을 이 후의 항목에 기재합니다.

    문제점



    OUTPUT(출력)에서 OmniSharpLog에 「Did not find 'Microsoft.NETCore.App' in lock file.」라는 에러가 나와 있다.


    mono의 msbuild가 16.3 이상 나오지 않으면 발생한다.
    Homebrew에서 mono를 설치한 경우 mono는 6.8.0.123(2020/5/22 현재)이 설치되지만 msbuild는 16.1계 때문에 dotnet3.x계에서 문제가 발생한다.
    $ msbuild -version
    Microsoft (R) Build Engine version 16.1.85+gad9c9926a7 for Mono
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    16.1.85.40109
    

    대응 방법



    Homebew에서 설치한 mono를 제거합니다.
    $ brew uninstall mono
    

    "Download - Stable | Mono"에서 6.8.0 Stable을 다운로드하여 설정합니다.
    msbuild가 16.3 이상 확인한다.
    $ msbuild -version
    Mono 向け Microsoft (R) Build Engine バージョン 16.5.0-ci
    Copyright (C) Microsoft Corporation.All rights reserved.
    
    16.5.0.16201
    

    Code→Preferences(기본 설정)→Settings(설정)를 선택합니다.
    Search Settings(설정 검색)에 useGlobalMono를 입력하여 필터링합니다.
    Omnisharo : Use Global Mono를 "never"로 변경


    "Restart OmniSharp"한다.
    PROBLEMS(문제)에서 CS0246 및 CS0518과 같은 오류가 사라졌는지 확인합니다.

    오류 상세



    Visual Studio Code의 문제 탭에서 항목을 선택하고 오른쪽 클릭 → 복사하여 얻은 정보.


    {
        "resource": "/Users/xxxxx/develpoment/test/obj/Debug/netcoreapp3.1/test.AssemblyInfo.cs",
        "owner": "csharp",
        "code": "CS0246",
        "severity": 8,
        "message": "The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) [test]",
        "source": "csharp",
        "startLineNumber": 14,
        "startColumn": 12,
        "endLineNumber": 14,
        "endColumn": 18
    }
    
    {
        "resource": "/Users/xxxxx/develpoment/test/obj/Debug/netcoreapp3.1/test.AssemblyInfo.cs",
        "owner": "csharp",
        "code": "CS0518",
        "severity": 8,
        "message": "Predefined type 'System.String' is not defined or imported [test]",
        "source": "csharp",
        "startLineNumber": 14,
        "startColumn": 55,
        "endLineNumber": 14,
        "endColumn": 61
    }
    

    좋은 웹페이지 즐겨찾기