2015-02-07 19 views
7

비주얼 스튜디오 2013컴파일 기호를 기반으로 DLL을 조건부로 참조하는 방법은 무엇입니까?

나는 내가 csproj 파일에 다음과 같이 참조하고 외부 DLL이 있습니다

<ItemGroup> 
    <Reference Include="NameOfDll"> 
     <HintPath>Path\To\Dll\NameOfDll.dll</HintPath> 
    </Reference> 

내가이 참조 컴파일러 기호가 존재하는 경우에 작동 할 때이 작동하지 할을 컴파일러 기호가 없습니다. (의 컴파일러 기호가 프레드라고 가정 해 봅시다, 아래의 첫 번째 코멘트를 해결하기 위해.)

이 질문을 [Conditional Reference] 은 '제가 위의 참조 요소에 조건이라는 속성을 추가 할 수 있다고 생각하지만, 내가 할 수있는 제작 내가 원하는 것을 얻기 위해 그 속성을 부여하기 위해 어떤 가치가 있는지 생각해보십시오.

VS UI에서이 작업을 수행하는 것이 가장 행복 할 것이지만 어떤 방법을 택하겠습니다.

+0

@HansPassant 질문을 이해하는 데 도움이된다면 Fred라고하는 컴파일러 기호가 있다고 가정하십시오. 컴파일러 심볼이 빌드 속성입니까? – cja

+0

조건부 컴파일러 심볼은 DefineConstants 빌드 속성에 있습니다. DefineConstants에 조건에 문자열이 포함되어 있는지 확인합니다. –

+0

@mikez 답변에 조금 더 자세하게 적어주세요. 정확하다고 표시하겠습니다. – cja

답변

13

조건부 컴파일 기호는 DefineConstants MSBuild 속성에 있습니다. 여기에 기호가 포함되어 있는지 확인하십시오.

<Reference Include="NameOfDll" Condition="$(DefineConstants.Contains('Fred'))"> 
    <HintPath>Path\To\Dll\NameOfDll.dll</HintPath> 
</Reference> 

기호의 고유 한 이름을 선택하십시오. 디버그 나 추적과 같은 다른 상수의 하위 문자열 일 수있는 것은 아닙니다.

+0

고맙습니다. (감사합니다.) 부정적인 첫 번째 의견과 마지막 투표를 무시한 – cja