2015-02-07 8 views
7

Visual Studio 2013.Jak warunkowo odwoływać się do biblioteki DLL na podstawie symbolu kompilacji?

mam zewnętrznego DLL, który ja odsyłania jak to w pliku csproj:

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

chcę odniesienie to działa, gdy istnieje symbol kompilator i nie działa, gdy to symbol kompilatora nie istnieje. (W odpowiedzi na pierwszy komentarz poniżej, powiedzmy symbol kompilator nazywa się Fred.)

to pytanie [Conditional Reference] uświadomiła mi, że mogę dodać atrybut o nazwie Stan do elementu odniesienia przedstawionej powyżej, ale mogę” • Wypracuj jaką wartość nadać temu atrybutowi efekt, jaki chcę.

Byłbym bardzo szczęśliwy, gdyby dano mi sposób na zrobienie tego w interfejsie VS, ale podejmiemy dowolną metodę.

+0

@HansPassant Załóżmy, że symbol kompilatora nazywa się Fred, jeśli pomoże to zrozumieć pytanie. Czy symbol kompilatora jest właściwością kompilacji? – cja

+0

Symbole kompilatora warunkowego znajdują się w właściwości budowania DefineConstants. sprawdzisz, czy DefineConstants zawiera jakiś ciąg w warunku. Coś w rodzaju 'Condition =" $ (DefineConstants.Contains ('Fred')) "' –

+0

@mikez Proszę podać trochę więcej szczegółów w odpowiedzi, a ja oznaczyłem to poprawnie. – cja

Odpowiedz

13

Symbole kompilacji warunkowej znajdują się we właściwości MSBuild DefineConstants. Sprawdź, czy zawiera on Twój symbol:

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

Wybierz wyróżniającą nazwę symbolu. Nie coś, co mogłoby być podciągłem innej stałej, takiej jak Debug lub Trace.

+0

Dziękuję za przeciwstawienie się negatywnej pierwszej uwadze i zamknięciu głosowania – cja

Powiązane problemy