代码之家  ›  专栏  ›  技术社区  ›  tunnuz

根据条件编译符号(预处理器常量)的值,是否可以在C#项目中添加引用?

  •  4
  • tunnuz  · 技术社区  · 15 年前

    我正在开发一个可以为两种不同技术编译的库。基本上,库的用户应该能够为 Unity3D 游戏引擎或 NeoAxis 游戏引擎。问题是:当库准备好进行条件编译时(如果UNITY使用。。。#endif等),我找不到一种方法来启用一组引用或其他依赖于条件编译符号的引用。

    有可能吗?如果是,怎么做?

    3 回复  |  直到 10 年前
        1
  •  7
  •   Preet Sangha    15 年前

    是的,但必须在msbuild.csproj文件中执行此操作。这个文件本质上只是一个数据列表,比如引用。

    你要做的是加一个 Condition 对两个引用的语句。

    <Reference ..a.. Condition="'$LibToUse' =='NeoAxis'" />
    
    
    <Reference ..b.. Condition="'$LibToUse' =='Unitv3D'" />
    

        2
  •  2
  •   Community Mohan Dere    9 年前

    如何仅像在代码中那样通过条件编译符号添加引用。i、 e.回答是否在项目设置中设置了例如UNITY this post ,只需编辑.csproj文件,向引用中添加条件,然后调用 DefineConstants.Contains() 方法如下:

    <Reference Include="yourdll" Condition="$(DefineConstants.Contains('UNITY'))">
    
        3
  •  1
  •   Darin Dimitrov    15 年前

    继续添加所有必要的参考资料。如果您的代码中从未使用过它们,编译器将自动删除它们,这将是由于 #if/#endif .sln 引用两个不同的文件 .csproj SomeProject_VS2008.sln SomeProject_VS2010.sln