C# 检查库/命名空间/类是否存在(在编译时)

本文关键字:编译 存在 是否 检查 命名空间 | 更新日期: 2023-09-27 18:32:58

我用 c# 编写了一些使用库的代码,但我想共享它并希望它工作,无论该库是否存在,基本上我想在我的代码中检查库是否存在,如果不存在,我使用备用代码来执行库应该做的事情。

那你会怎么做呢?

我想也许我可以使用预处理器指令,但老实说,我对这些几乎没有经验,似乎找不到如何做到这一点。

编辑:

刚刚发现已经提出了类似的问题:在编译时检查 .NET 中是否存在引用/类型(我实际上在发布之前已经搜索过,但不知何故错过了这个(

但似乎没有一个令人满意的答案。

真的没有办法吗?

编辑2 :很抱歉没有早点指定这一点,但是我编写的代码用于Unity3D项目,基本上是一堆脚本。

C# 检查库/命名空间/类是否存在(在编译时)

假设你的项目名为 A:

  1. 创建一个新项目 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(,以获取有关如何执行此操作的详细信息。

  2. 在项目 A 的属性中,在"生成"下添加一个条件编译符号,例如USE_LIBRARY。

  3. 对于使用该库的每个源文件,将 using 语句修改为如下所示的内容:

    #if USE_LIBRARY

    使用 Lib.Xxx

    #else

    使用 DummyLib.Xxx

    #endif

然后使用替代代码创建 DummyLib。

这样 A.dll 将依赖于库,而 B.dll 将不依赖于库。然后,您可以在没有库的情况下分发 B.dll。