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

时间:2013-09-27 10:30:43

标签: c# unity3d exists compile-time

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

那你怎么做?

我想也许我可以使用预处理器指令,但说实话,我对这些没什么经验,似乎无法找到如何做到这一点。

编辑:

刚刚发现一个类似的问题已被问过: Checking for the existence a reference/type at compile time in .NET (我在发布之前实际上已经搜索过,但不知何故错过了这个)

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

真的没办法吗?

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

1 个答案:

答案 0 :(得分:0)

我们假设您的项目名为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的属性中,在Build下添加一个条件编译符号,例如USE_LIBRARY。

  3. 对于使用该库的每个源文件,请将using语句修改为:

    #if USE_LIBRARY

    使用Lib.Xxx

    的#else

    使用DummyLib.Xxx

    #ENDIF

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

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