2017-11-08 30 views
1

오래전처럼 보일지 모르지만 .NET Framework 2.0을 대상으로하는 클래스 라이브러리를 개발해야한다는 요구 사항이 있습니다. 우리의 빌드 스크립트는 Visual Studio 2010을 필요로하고 devenv.exe를 호출하여 솔루션 파일의 경로를 전달합니다..NET Core 2 SDK 도구를 사용하여 .NET Framework 2.0을 대상으로하는 클래스 라이브러리를 빌드 할 수 있습니까?

우리는 .NET Core 2.0을 목표로하는 클래스 라이브러리를 생성해야한다는 새로운 요구 사항이 있습니다. .NET Framework 버전을 목표로 장기간 목표를 설정했습니다. .NET의 재 설계로 더 이상 IDE가 필요하지 않으며 .NET Core 2 SDK 도구가 필요합니다.

dotnet build 명령이 --framework 인수를 허용하는 것으로 나타났습니다. Target Frameworks 페이지는 지원되는 TFM 인 net20을 표시합니다. 이의이 노력이 어떻게되는지 보자, 나는이 net20 대상으로 다음과 같은 오류 메시지와 함께 만났다 :

C : \ CLI \ SDK \ 2.0.0 \ Microsoft.Common.CurrentVersion.targets (1122,5) : 오류 MSB3644 : 프레임 워크 에 대한 참조 어셈블리 ".NETFramework, Version = v2.0"을 (를) 찾을 수 없습니다. 이 문제를 해결하려면 SDK 또는 타겟팅 팩을이 프레임 워크 버전으로 설치하거나 응용 프로그램을 SDK 또는 타겟팅 팩이 설치된 프레임 워크 버전으로 조정하십시오. 어셈블리는 GAC (Global Assembly Cache)에서 으로 해결되며 참조 어셈블리 대신 사용됩니다. 따라서 어셈블리가 의도 한 프레임 워크를 대상으로 정확하게 이 아닐 수도 있습니다. 비주얼 스튜디오 2017 년 내 프로젝트의 속성의 응용 프로그램 탭에서

을 : [C \ 경로 \ 내 \의 project.csproj을 \에, 대상 프레임 워크 드롭 다운은 Install other frameworks... 링크가 있습니다. 나열된 가장 오래된 .NET Framework 버전은 3.5 SP1이며 Dev Pack 참조가 없습니다. 내가 할 수있는 일이 가능한거야? 그렇다면 .NET Framework 2.0 Targeting Pack은 어디에서 찾을 수 있습니까?

답변

0

사실 마이크로 소프트가 쉽게

(I) .NET Framework 2.0 Software Development Kit (SDK) (x64) 또는

(II) .NET Framework 2.0 Software Development Kit (SDK) (x86)

또 다른 문제를 만들 좋아하지 않는다는 사실에도 불구하고 .NET 2.0을 찾기 위해 그 어려운 일이 아니다 .NET Framework 2.0을 대상으로 .NET Core 빌드 시스템을 얻는 것입니다. Roslyn은 .NET 2.0 타겟팅을 지원하지만 .NET Core 빌드 시스템의 작동 방식을 알기는 어렵습니다. 그러나 모든 것이 오픈 소스이므로 확실하게 수행 할 수 있습니다. 유일한 질문은 얼마나 많은 작업이 필요한지입니다. 내가 지시하고 결과를 게시하는 프레임 워크를 사용해보십시오. 아마도 몇 가지 문제를 해결하는 데 도움이 될 수 있습니다.

+0

이러한 링크를 공유해 주셔서 감사합니다. –

1

MSBuild가 이러한 프레임 워크에서 다르게 작동하고 MSBuild의 .NET Core 버전이 필요한 작업을 수행 할 수 없기 때문에 .NET 버전이 4. *보다 낮은 경우에는 .NET CLI (dotnet build 및 이와 유사한 명령)를 사용할 수 없습니다. 그러나 개발자 명령 프롬프트에서 msbuild.exe을 사용할 수 있습니다.

2. * CLR 용으로 빌드하려면 프레임 워크를 설치해야합니다. 대상 지정 팩은 4. * 개념이며 msbuild는 .NET < 4. *를 대상으로하는 응용 프로그램에 설치된 프레임 워크를 사용할 수 있어야합니다. (구체적으로 : MSBuildTaskHost.exe은 .NET 3.5 프레임 워크를 사용하여 실행됩니다.)

2.0 용으로 빌드하지는 않았지만 3.5 용 빌드 (Microsoft (3.5 SP1)에서 계속 지원되는 유일한 버전)가 가능하며 지원됩니다.

+0

CLR 2.0 기반 빌드에서 .NET CLI를 사용하고 싶습니다. 네가 말하는대로, 이것은 불가능하다. "4. *"라고 말하면 실제로 4.0을 포함한다는 의미입니까? 아니면 4.5 이상을 의미합니까? –

+0

나는 실제로 4.0+를 의미한다. 그러나 그것을위한 작업 표적화 팩을 얻기가 어려울 수있다. netbuild/net35 참조 어셈블리의 위치를 ​​지정하기 위해 일부 msbuild 변수를 재정의하는 방법이있을 수 있지만, msbuild를 사용하는 것이 더 낫다. VS 또는 모노의 msbuild (지원하는 모든 플랫폼에서 .net 코어 및 전체 .net SDK 프로젝트를 빌드 할 수 있음) –