C # 7.3에서는 '선언 사용'기능을 사용할 수 없습니다. 언어 버전 8.0 이상을 사용하십시오. 한 시스템에서는 오류가 발생하지만 다른 시스템에서는 작동합니다.


24

Visual Studio Enterprise 16.3.7두 대의 개별 컴퓨터에서 사용할 때 하나는 잘 빌드되고 다른 하나는 오류를 발생시킵니다.

C # 7.3에서는 '선언 사용'기능을 사용할 수 없습니다. 언어 버전 8.0 이상을 사용하십시오.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

https://stackoverflow.com/a/48085575/3850405에 제안 LangVersion.csproj대로 설정 하거나 위의 인쇄 화면과 같이 Visual Studio에서 자동으로 수정하도록 하면 작동하지 않는 컴퓨터에서 쉽게 해결할 수 있습니다 .

<LangVersion>8.0</LangVersion>

내가 이해할 수없는 것은 왜이 기계가 없어도 한 기계가 잘 빌드 .csproj되고 다른 기계가 그것을 필요로하는 것입니다.


당신이 그런 오류가 발생하는 경우, 그것은 그것의 의미 하지 는 C # (8) 프로젝트, 또는 당신은 분석 버그와 ReSharper에서 버전을 사용
파나지오티스 Kanavos

csproj의 TargetFramework와 LangVersion은 무엇입니까?
Panagiotis Kanavos

@PanagiotisKanavos 예.하지만 프로젝트는 다른 컴퓨터가 아닌 한 컴퓨터에서 빌드됩니다. ReSharper는 사용되지 않습니다.
Ogglas

이는 한 시스템에서 3.0 SDK가 누락되었음을 의미 할 수 있습니다. 무엇을 dotnet --list-sdks보여줍니까?
Panagiotis Kanavos

@PanagiotisKanavos Target 프레임 워크 .NET Framework 4.6.1이며 LangVersion설정되지 않았습니다.
Ogglas

답변:


20

나는 같은 오류를 받았지만 단순히 포함하는 것을 잊어 버렸습니다.

<LangVersion>8.0</LangVersion>

솔루션의 모든 .csproj 파일의 속성 . 다음은 현재 c # 8 설정입니다.

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
    <NullableContextOptions>enable</NullableContextOptions>
  </PropertyGroup>

코어 2.2에서 3.x로 마이그레이션 할 때 다음 문서가 가장 유용한 것으로 나타났습니다.

MSDN 2.2-> 3.0

MSDN 3.0-> 3.1


2
<LangVersion>latest</LangVersion>대신 사용할 수 있습니다<LangVersion>8.0</LangVersion>
Eliahu Aaron

첫 번째 링크 MSDN 2.2 -> 3.0는 다음 링크에 연결되어 있다고 생각합니다 . docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 수정하기 위해 답을 편집하려고했지만 "제안 된 대기열 편집" 가득 찼습니다 "대신 여기에 게시합니다.
ahillier88


10

컴파일러가 기본적으로 다른 대상 프레임 워크에 다른 C # 언어 버전을 사용하기 때문일 수 있습니다.

기본 C # 언어를 무시하려면 프로젝트 파일에 추가하십시오 (문제가 제안 된대로).

<PropertyGroup>
   <LangVersion>8.0</LangVersion>
</PropertyGroup>

또는:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>

참조 버전 C # 언어 다른 대상 프레임 워크와 방법을 수동으로 C # 언어 버전을 선택하는 방법에 대한 기본 C # 언어 버전을.

스택 오버플로 응답 참조 C # 8은 .NET Framework를 지원합니까? 이 주제에 대한 자세한 정보.


다음은 C # 언어 버전 관리 기사의 일부입니다 .

C # 언어 버전 관리

최신 C # 컴파일러는 프로젝트의 대상 프레임 워크를 기반으로 기본 언어 버전을 결정합니다. C # 언어에는 모든 .NET 구현에서 사용할 수없는 형식 또는 런타임 구성 요소에 의존하는 기능이있을 수 있기 때문입니다. 또한 프로젝트의 대상이 무엇이든 기본적으로 가장 높은 언어 버전을 얻을 수 있습니다.

이 문서의 규칙은 Visual Studio 2019 또는 .NET Core 3.0 SDK와 함께 제공되는 컴파일러에 적용됩니다. Visual Studio 2017 또는 이전 .NET Core SDK 버전의 일부인 C # 컴파일러는 기본적으로 C # 7.0을 대상으로합니다.

기본값

컴파일러는 다음 규칙에 따라 기본값을 결정합니다.

--------------------------------------------------------
Target framework | version | C# language version default
--------------------------------------------------------
.NET Core        | 3.x     | C# 8.0
.NET Core        | 2.x     | C# 7.3
.NET Standard    | 2.1     | C# 8.0
.NET Standard    | 2.0     | C# 7.3
.NET Standard    | 1.x     | C# 7.3
.NET Framework   | all     | C# 7.3
--------------------------------------------------------

기본값 무시

C # 버전을 명시 적으로 지정해야하는 경우 여러 가지 방법으로 지정할 수 있습니다.

  • 프로젝트 파일을 수동으로 편집하십시오.
  • 서브 디렉토리에서 여러 프로젝트의 언어 버전을 설정하십시오.
  • -langversion 컴파일러 옵션을 구성하십시오.

프로젝트 파일 편집

프로젝트 파일에서 언어 버전을 설정할 수 있습니다. 예를 들어, 미리보기 기능에 명시 적으로 액세스하려면 다음과 같은 요소를 추가하십시오.

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

이 값 preview은 컴파일러에서 지원하는 최신 미리보기 C # 언어 버전을 사용합니다.

여러 프로젝트 구성

여러 프로젝트를 구성하기 위해 요소 가 포함 된 Directory.Build.props 파일을 만들 수 있습니다 <LangVersion>. 일반적으로 솔루션 디렉토리에서 수행합니다. 솔루션 디렉토리 의 Directory.Build.props 파일에 다음을 추가하십시오 .

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

이제 해당 파일을 포함하는 디렉토리의 모든 하위 디렉토리에 빌드가 미리보기 C # 버전을 사용합니다. 자세한 정보는 빌드 사용자 정의 기사를 참조하십시오 .


8

최신 버전의 .Net Core 3.0 및 3.1을 다운로드했으며 동일한 문제가 발생했습니다. 나를 위해 수정 프로그램은 Visual Studio 2019의 최신 업데이트 (버전 16.4.2)를 다운로드하는 것 같습니다.

이것은 또한 내 컴퓨터를 다시 시작했고 오류가 사라졌습니다.


VS2019 버전 번호가 아니며 16.xy Use Help> About과 같습니다.
Hans Passant

4.7.03056은 .NET Framework 버전이며 마지막 VS 버전은 현재 16.4.4입니다.
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.