2008-09-28 4 views
13

명령 줄 호출 (예 : .csproj 파일이없고 MSBUILD 엔진을 통과하지 않음)을 통해 csc.exe C# 컴파일러의 대상 프레임 워크 버전을 어떻게 지정합니까?csc.exe의 특정 frawework 버전을 목표로합니다.

예를 들어 C# 3.0 csc.exe 컴파일러를 사용하면 2.0 .net 프레임 워크를 대상으로 IL을 컴파일하는 방법은 무엇입니까?

답변

4

특정 사례의 C# 3 컴파일러에서는 .NET 2.0에없는 어셈블리 나 형식을 사용하지 않는 한 문제가 없습니다. IL은 동일합니다 예를 들어 타겟팅 1.1).

이외에도/noconfig/nostdlib을 사용하고 .NET 2.0 어셈블리 (예 : c : \ Windows \ Microsoft.NET \ Framework \ v2.0.50727)를 명시 적으로 참조 할 수 있습니다./lib 명령 줄 옵션을 사용하면 참조를 검색 할 디렉토리를 지정함으로써이 방법을 약간 더 쉽게 만들 수 있지만 필자는 직접 시도하지 않았습니다.

+0

이것은 (분명히 2.0 libs를 참조하면서) 작동하는 것처럼 보이지만 IL이 동일하다는 사실에 의지하는 첫 번째 제안은 나를 '노출 된'채로 남겨둔 것처럼 보일 것입니다 (예 : 컴파일 타임 경고 없음 2.0 전용 어셈블리에서 벗어났다.) – sbohlen

+0

예, 당신은 그것에 노출 될 것입니다. .NET 2.0과 2.0SP1의 차이점에도주의하십시오 (예 : DateTimeOffset) - 참조 할 "바닐라"2.0 어셈블리를 쉽게 찾을 수 있는지 여부를 모르겠습니다. 물론 비 SP1 컴퓨터에서 복사 할 수 있습니다 ... –

+0

그래, 내 생각에 내가 말할 수있는 한, 이것은 내가 다시 살펴야 할 것입니다 : MSBUILD가 해고 될 때 '시행'되는 방법 off를 .csproj 파일과 비교할 수 있습니다 (물론 FW 버전을 지정할 수 있습니다). 방탄되지 않는 csc.exe 옵션을 사용할 수 없습니다. – sbohlen

관련 문제