如果程序集存在,则 C# 条件编译

标签 c# conditional-compilation

我有一个项目,其中的引用可能存在也可能不存在。我有使用该引用的代码,我只想在程序集存在时编译它。我在想一些事情:

#if ASSEMBLY_EXISTS
    AssemblyClass.DoSomething();
#endif

我可以在顶部放置一个 #define 并根据需要进行评论/取消评论,但我更希望它能以某种方式知道它是否存在而无需我的手动干预,这让我相信#if 不适用于这种情况。是否有另一种方法可以根据程序集是否存在进行条件编译?

最佳答案

也许在 MSBUILD 中使用一个条件来完成;

看起来有点像

<PropertyGroup>
     <DefineConstants Condition="Exists('my.dll') ">$(DefineConstants);DLLEXISTS</DefineConstants>
</PropertyGroup>

并且应该在您的 .csproj 文件中走得很远。

粗略地读作“如果 my.dll 存在,通过附加 DLLEXISTS 重新定义常量”

现在你应该可以做

#if DLLEXISTS
    // your stuff here
#endif

您可能需要摆弄 EXISTS 表达式以找到合适的相对路径。

关于如果程序集存在,则 C# 条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071716/

相关文章:

c# - 如何在 Windows 应用商店应用程序中登录 PC 用户名?

c# - 写入未插入的 USB 设备

c# - 判断是否在IDE中执行的方法?

actionscript - Flash Builder 条件编译变量

c# - 提供给 Debug.Assert 的表达式是否会在发布版本中进行评估?

c# - 比较通过 NetworkStream 发送到服务器/从服务器发送的值

c# - 将继承的类转换回基类

c# - 删除字典中的重复项

c++ - 是否可以根据宏或变量有条件地编译/运行代码?