.NET Framework 대상 지정 오류 문제 해결
적용 대상: Visual Studio
이 항목에서는 참조 문제로 인해 발생할 수 있는 MSBuild 오류와 이러한 오류를 resolve 방법에 대해 설명합니다.
다른 버전의 .NET을 대상으로 하는 프로젝트 또는 어셈블리 참조
다른 버전의 .NET을 대상으로 하는 프로젝트 또는 어셈블리를 참조하는 애플리케이션을 만들 수 있습니다. 예를 들어 .NET 6을 대상으로 하지만 .NET Core 3.1을 대상으로 하는 어셈블리를 참조하는 애플리케이션을 만들 수 있습니다. 그러나 이전 버전의 .NET을 대상으로 하는 프로젝트에서는 .NET 6을 대상으로 하는 프로젝트 또는 어셈블리에 대한 참조를 설정할 수 없습니다. 다음은 이 경우에 표시될 수 있는 오류의 예입니다.
error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.
오류를 resolve 애플리케이션이 참조하는 프로젝트 또는 어셈블리의 대상 버전과 호환되는 .NET 버전을 대상으로 지정해야 합니다.
프로젝트를 다른 버전의 .NET으로 다시 대상 지정
애플리케이션에 대한 .NET의 대상 버전을 변경하는 경우 Visual Studio는 일부 참조를 변경하지만 일부 참조를 수동으로 업데이트해야 할 수 있습니다. 예를 들어 애플리케이션을 .NET Core 3.1을 대상으로 변경하고 애플리케이션에 .NET 6을 사용하는 참조, 리소스 또는 설정이 있는 경우 이전에 언급한 오류 중 하나가 발생할 수 있습니다.
app.config 참조 업데이트
.NET Framework 애플리케이션에서 애플리케이션 설정을 해결하려면 다음 단계를 수행합니다.
- 솔루션 탐색기 엽니다.
- 모든 파일 표시를 선택한 다음 Visual Studio의 XML 편집기에서 app.config 파일을 편집합니다.
- 적절한 버전의 .NET과 일치하도록 설정의 버전을 변경합니다. 예를 들어 버전 설정을 4.0.0.0에서 2.0.0.0으로 변경할 수 있습니다.
마찬가지로 리소스를 추가한 애플리케이션의 경우 다음 단계를 수행합니다.
- 솔루션 탐색기 엽니다.
- 모든 파일 표시를 선택합니다.
- 내 프로젝트(Visual Basic) 또는 속성(C#)을 확장한 다음 Visual Studio의 XML 편집기에서 Resources.resx 파일을 편집합니다.
- 버전 설정을 4.0.0.0에서 2.0.0.0으로 변경합니다.
리소스 업데이트
애플리케이션에 아이콘이나 비트맵 또는 데이터 연결 문자열과 같은 설정과 같은 리소스가 있는 경우 프로젝트 Designer 설정 페이지에서 모든 항목을 제거한 다음 필요한 설정을 읽어 오류를 resolve 수 있습니다.
프로젝트를 다른 버전의 .NET으로 다시 대상으로 지정하면 참조가 확인되지 않습니다.
프로젝트를 다른 버전의 .NET으로 다시 대상으로 지정하는 경우 경우에 따라 참조가 제대로 resolve 않을 수 있습니다. 어셈블리에 대한 명시적 정규화된 참조는 종종 이 문제를 발생하지만 resolve 않는 참조를 제거한 다음 프로젝트에 다시 추가하여 resolve 수 있습니다. 또는 프로젝트 파일을 편집하여 참조를 바꿀 수 있습니다. 먼저 다음 양식의 참조를 제거합니다.
<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
그런 다음, 간단한 형식으로 바꿉 있습니다.
<Reference Include="System.ServiceModel" />
참고
프로젝트를 닫고 다시 연 후에는 모든 참조가 올바르게 resolve 있도록 프로젝트를 다시 빌드해야 합니다.