[英]XNA - Conditionally include object based on target platform
我正在为Windows和xbox构建XNA 4.0应用程序。
在Windows版本中,我有一个调试控制台,该控制台引用IronPython和紧凑框架中不支持的某些CLR / DLR程序集。 我也有一些引用这些项目的局部类。
我知道我可以从xbox项目中删除引用以保持兼容性。 但是,我还需要删除引用这些项目的类。 问题是这些类由需要它们的其他类实例化,但仅适用于Windows。
解决这一难题的明显方法是将对不支持的类的调用包装在#if
预处理器指令中:
#if WINDOWS
InitializeScriptingEngine(....);
#endif
另外,我想我可以用相同的方法包装整个类/部分类,以防止被编译。 有一个更好的方法吗? 我想避免使用预处理器指令添加代码。
另外,我似乎找不到在解决方案范围内指定条件的方法。
如果您将Game Studio的内置功能用于“为Xbox 360创建项目的副本”(Zune和Windows Phone的同上),则以下操作将在项目之间进行镜像:
至关重要的是,以下操作未在项目之间进行镜像 :
在MSDN上的“ 跨平台游戏项目转换器”页面上对此进行了更详细的说明。 此过程由项目文件中的<XnaCrossPlatformGroupID>
元素控制。
结果是您可以从该平台上的项目中简单地排除包含不相关类的文件。
我个人更喜欢在平台缺少某些功能的情况下创建备用存根类,而不是在整个项目中分散使用#ifdef
。 并且,如果您在存根函数中附加了[Conditional("NEVER_DEFINED")]
属性,则编译器将删除对其的调用。
我可以肯定地说,在Visual Studio中没有解决方案范围的指定定义常量的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.