1

我正在为 Windows 和 xbox 构建一个 XNA 4.0 应用程序。

在 Windows 版本中,我有一个调试控制台,它引用 IronPython 和一些紧凑框架中不支持的 CLR/DLR 程序集。我还有一些引用这些项目的部分类。

我知道我可以从 xbox 项目中删除引用以保持兼容性。但是,我还需要删除引用这些项目的类。问题是这些类由需要它们的其他类实例化,但仅适用于 Windows。

这个难题的明显解决方案就是在#if预处理器指令中包装对不受支持的类的调用:

#if WINDOWS
  InitializeScriptingEngine(....);
#endif

另外,我想我可以以相同的方式包装整个类/部分类以防止它被编译。有一个更好的方法吗?我想避免在代码中添加预处理器指令。

此外,我似乎找不到在解决方案范围内指定条件的方法。

4

1 回答 1

1

如果您使用 Game Studio 的“为 Xbox 360 创建项目副本”(Zune 和 Windows Phone 同上)的内置功能,则以下操作将在项目之间镜像:

  • 添加新项目
  • 添加现有项目
  • 改名
  • 删除

至关重要的是,以下操作不会在项目之间镜像

  • 从项目中排除
  • 更改引用和内容引用

这在 MSDN 上的Cross-Platform Game Project Converter页面上进行了解释(更详细) 。此过程由<XnaCrossPlatformGroupID>项目文件中的元素控制。

结果是您可以简单地从该平台上的项目中排除包含不相关类的文件。

#ifdef就我个人而言,我更喜欢在平台缺少某些功能的情况下创建备用存根类,而不是分散在整个项目中。如果你在[Conditional("NEVER_DEFINED")]你的存根函数上附加一个属性,那么编译器将删除对它们的调用。

我有理由确定在 Visual Studio 中没有指定定义常量的解决方案范围的方法。

于 2010-11-13T01:08:00.517 回答