Как условно ссылаться на DLL на основе символа компиляции?

Visual Studio 2013.

У меня есть внешняя DLL, на которую я ссылаюсь в файле csproj:

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

Я хочу, чтобы эта ссылка функционировала, когда символ компилятора существует и не функционирует, когда этот символ компилятора не существует. (Чтобы ответить на первый комментарий, ниже, скажем, символ компилятора называется Fred.)

Этот вопрос [Условная ссылка] заставило меня подумать, что я могу добавить атрибут "Условие в ссылочный элемент", показанный выше, но я не могу определить, какое значение даст этот атрибут для выполнения того, что я хочу.

Я был бы очень рад, если вам будет предоставлен способ сделать это в VS UI, но я возьму любой метод.

Ответ 1

Символы условной компиляции находятся в свойстве DefineConstants MSBuild. Убедитесь, что это содержит ваш символ:

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

Выберите отличительное имя для символа. Не то, что может быть подстрокой другой константы, такой как Debug или Trace.