2009-12-16 3 views
2

Visual Studio에서 대상 프레임 워크를 전환 할 때 컴파일 될 수있는 코드 조각 결정하기 위해 사전 컴파일 기호를 사용, 그리고 수 그것의 2 개의 다른 목표 프레임 워크 어셈블리를 만들고 싶습니다. 대상 프레임 워크가 2.0 인 경우 일부 코드를 작성하고 다른 대상 프레임 워크로 전환 할 때 몇 가지 새로운 기능을 사용하기 위해 다른 코드 조각을 작성해야합니다.는 나는 우리가 내가 프로젝트가 2008 년</p> <p>후 Visual Studio에서 다른 .NET Framework를 대상으로 전환 할 수 있습니다

이제 수동으로 주석을 달고 코드의 모든 주석을 제거해야합니다. 일부 사전 컴파일 기호를 사용하여 동적으로이 작업을 수행 할 수 있는지 궁금합니다. 좋아요 :

#if Framework3 
<do something> 
#else 
<do something else> 
#endif 

수 있습니까?

+0

이것은 http://stackoverflow.com/questions/408908/conditional-compilation-depending-on-the-framework-version-in-c의 중복 일 수 있습니다. – Costo

+0

그래, 나는 눈치 채지 못했습니다. 그러나 나는 그것보다 훨씬 더 우아한 해결책을 얻은 것 같다. :) – redjackwong

답변

2

예, 우리는 이것을 MiscUtil에서합니다. 대상 프레임 워크 선택이 현재 구성을 무시하는 속성 페이지에 있기 때문에 Visual Studio에서 직접 할 수 있는지 확신 할 수 없습니다. 그러나 프로젝트 파일을 직접 편집하여 올바른 구성에 적합한 대상 프레임 워크를 얻을 수 있습니다. 특히 .NET 2.0을 대상으로 할 때 .NET 3.5 참조가 없는지 확인해야합니다. 자세한 내용은 주요 프로젝트 파일 (MiscUtil.csproj)을보십시오.

프리 프로세서 심볼 부분은 쉽습니다. 일단 .NET 2.0의 빌드 구성을 얻으면 Visual Studio에서 전처리 기 심볼을 직접 추가 할 수 있습니다.

+0

나는 코드를 읽었으며, 훌륭하다면 프로젝트 파일을 직접 수정해야한다고 말해야합니다. 그것이 내가 생각하기를 원하는 것입니다. 고맙습니다. – redjackwong

1

각 프레임 워크 버전을 컴파일하기 전에 빌드 옵션에서 정의하십시오.

  1. 추가 Framework3
  2. 컴파일 .NET 프레임 워크 3.5
  3. 변경 에 Framework2
  4. 컴파일 .NET을위한 프레임 워크 2.0

이 여전히 외설에 대한 ' 당신이 원했던대로 자동화 된 T 그렇다고해서 여러 줄의 주석을 지우는 것보다 낫다.

0

예, 프로젝트 속성에서 정의 된 상수를 설정할 수 있습니다. 이를 관리하는 가장 좋은 방법은 코드를 공유하지만 정의 된 상수가 다른 별도의 프로젝트 파일을 만드는 것입니다. 그래서 mycode_Framework1.csproj, mycode_Framework2.csproj 등등 당신은 똑같은 해결책으로 그것들을 가질 수 있습니다. 그러나 그렇게한다면, 그것들을 조금 더 쉽게 만들 수 있습니다.

+0

프로젝트 전반에서 코드를 공유하는 것은 경험상 매우 취약합니다. 모든 프로젝트에 새 파일을 추가하는 것을 잊기 쉽습니다. 비주얼 스튜디오가 이런 종류의 것을 우아하게 다루지 않는다는 것은 수치스러운 일입니다. –