我有一个项目,其中的引用可能存在也可能不存在。我有使用该引用的代码,我只想在程序集存在时编译它。我在想一些事情:
#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/