0

我正在尝试开发一个跨平台的应用程序。目前我已经设置了以下解决方案,他们的平台指定了模板:

  • 游戏基地
  • 视窗
  • 的Xbox
  • 视窗电话

Windows、Xbox 和 WindowsPhone 使用 GameBase 作为参考,但我想为 GameBase 库中使用的每个平台分离不同的代码,如下例所示:

    #如果窗口

    graphics.PreferredBackBufferWidth = 640;
    graphics.PreferredBackBufferHeight = 480;
    graphics.ApplyChanges();

    #elif WINDOWS_PHONE

    TargetElapsedTime = TimeSpan.FromTicks(333333);
    InactiveSleepTime = TimeSpan.FromSeconds(1);

    #万一

它不起作用,我可以在配置管理器中看到,GameBase 的平台是 Any CPU,所以我想知道它是否与 GameBase 是一个类库有关?

如果是这样,我该如何解决,如果可能的话,我想保留 #if 标签。

目录设置 | Windows 解决方案 Game.cs | 解决方案资源管理器 目录设置 |  Windows 解决方案 Game.cs |  解决方案资源管理器

4

3 回答 3

3

您必须为不同的平台创建单独的 Visual Studio 项目。您可以通过使用Add As Link添加源代码来跨多个项目重用代码。在链接到多个项目的共享源文件中,您可以使用#if等来分隔特定于平台的代码。

添加为链接截图

从您的问题中并不清楚“它不起作用”是如何工作的,但通常您不能为 Windows 构建程序集(例如类库),然后在 XBox 和 Windows Phone 上使用它。

于 2012-03-07T15:40:12.613 回答
1

在不同的项目类型之间共享项目是一件棘手的事情 - 只是因为 Visual Studio 项目类型的使用方式以及不同的项目类型实际上需要引用不同版本的点网框架。

有几件事可以提供帮助:

希望有点帮助。就我个人而言,我目前主要使用手动剪切和粘贴,并希望下一个版本的便携式类库有所帮助(这是由于 Win8 Metro 的东西)

于 2012-03-07T16:28:44.030 回答
0

不确定这是否是您唯一的问题,但您拼错了 WINDOWS_PHONE:

WINDOWS_HPONE

应该:

WINDOWS_PHONE

更新:

我这样做的方式是创建一个类库解决方案,将其命名为 GameBaseLibrary。然后在那里创建一个名为 GameBase 的项目,并在其中添加您希望在所有平台上共享的所有代码。(IE物理、数据访问等...)

然后在同一个解决方案中添加 XboxBaseLibrary、WindowsBaseLibrary、WindowsPhoneBaseLibrary 并添加特定于每个平台的代码,在每个项目中添加对 GameBase 项目的引用,以便在其他三个项目中的每个项目中使用代码。

然后创建 3 种不同的解决方案类型 - Xbox、Window、Windows Phone,并添加从 GameBaseLibrary 编译的 dll 作为每个解决方案的参考,以便能够使用代码。当您处理每个版本的代码(xbox、windows、windows phone)时,请注意您输入的代码,以确保它不会存在于 GameBase 类中,因为您不想继续重写相同的代码。

这样,大部分代码位于 GameBaseLibrary 中,平台特定代码位于其他 3 个项目中。

我希望这很清楚。

于 2012-03-07T15:33:38.693 回答