如何根据编译符号有条件地引用 DLL?

How to conditionally reference a DLL based on a compilation symbol?

Visual Studio 2013.

我有一个外部 DLL,我在 csproj 文件中像这样引用它:

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

我希望此引用在编译器符号存在时起作用,而在该编译器符号不存在时不起作用。 (为了解决下面的第一条评论,假设编译器符号称为 Fred。)

这个问题 [ Conditional Reference ] 让我觉得我可以向上面显示的 Reference 元素添加一个名为 Condition 的属性,但我无法计算出为该属性赋予什么值来实现我想要的效果。

我很高兴能在 VS 中提供一种方法来执行此操作UI,但我会采用任何方法。

条件编译符号在 DefineConstants MSBuild 属性 中。检查这是否包含您的符号:

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

为符号选择一个独特的名称。不能是 Debug 或 Trace 等常量的子字符串。