C# 检查库/命名空间/类是否存在(在编译时)
本文关键字:编译 存在 是否 检查 命名空间 | 更新日期: 2023-09-27 18:32:58
我用 c# 编写了一些使用库的代码,但我想共享它并希望它工作,无论该库是否存在,基本上我想在我的代码中检查库是否存在,如果不存在,我使用备用代码来执行库应该做的事情。
那你会怎么做呢?
我想也许我可以使用预处理器指令,但老实说,我对这些几乎没有经验,似乎找不到如何做到这一点。
编辑:
刚刚发现已经提出了类似的问题:在编译时检查 .NET 中是否存在引用/类型(我实际上在发布之前已经搜索过,但不知何故错过了这个(
但似乎没有一个令人满意的答案。
真的没有办法吗?
编辑2 :很抱歉没有早点指定这一点,但是我编写的代码用于Unity3D项目,基本上是一堆脚本。
假设你的项目名为 A:
-
创建一个新项目 B,然后将源文件从 A 添加到 B(请参阅 http://blogs.msdn.com/b/saraford/archive/2008/11/26/did-you-know-how-to-add-a-linked-item-to-a-project-365.aspx(,以获取有关如何执行此操作的详细信息。
-
在项目 A 的属性中,在"生成"下添加一个条件编译符号,例如USE_LIBRARY。
-
对于使用该库的每个源文件,将 using 语句修改为如下所示的内容:
#if USE_LIBRARY
使用 Lib.Xxx
#else
使用 DummyLib.Xxx
#endif
然后使用替代代码创建 DummyLib。
这样 A.dll 将依赖于库,而 B.dll 将不依赖于库。然后,您可以在没有库的情况下分发 B.dll。