【问题标题】:How to create a class library based on MonoGame to be used from UWP, iOS, and Android如何创建基于 MonoGame 的类库以在 UWP、iOS 和 Android 中使用
【发布时间】:2016-04-13 17:37:11
【问题描述】:

我已经安装了 VisualStudio 2015、Xamarin 和 MonoGame 3.5。我将为 Windows UWP、iOS 和 Android 构建我的 XNA 应用程序。

我有一些基于 XNA 的库...我需要为三个目标系统(Windows UWP、iOS 和 Android)构建它们,但无法为 Windows UWP 创建库。我已经尝试创建一个MonoGame Windows 10 Universal Project,但是这样的项目无法转换为生成DLL。

我也尝试创建一个Class Library (Universal Windows) 项目,但后来我无法将MonoGame.Framework 添加到引用中。

我在创建MonoGame Android Project 时遇到了同样的问题...无法切换到库项目。唯一可以修改为库项目的 MonoGame 项目是MonoGame iOS Project

也就是说,我如何创建一个基于 XNA (MonoGame) 的类库以在 UWP、iOS 和 Android 上使用?

【问题讨论】:

    标签: android ios visual-studio win-universal-app monogame


    【解决方案1】:

    据我所知,这里只有 2 个选项。

    我并没有真正使用过共享项目。我理解它们的方式是,它们允许您在多个项目之间共享代码,就好像它存在于库中一样,但实际上它被直接编译到引用项目中。它们可以被认为是高级文件链接。

    便携式类库有点不同。我在MonoGame.Extended 项目中使用它们并取得了巨大成功,但这并不总是那么容易。它们的工作方式是提供适用于所有目标平台的功能子集。它们编译为任何项目都可以引用的 DLL,您可以确信代码是相同的。

    使用 PCL 有几个缺点:

    • 您只能使用部分功能。令人惊讶的是,这并不经常妨碍您。
    • 如果 PCL 引用另一个库,它也必须是 PCL。

    第二点是 MonoGame 的问题。通常,MonoGame 不作为 PCL 提供,但可以使用 PCL 版本published on NuGet

    就目前而言,NuGet 包是官方发布的一个版本,但令人惊讶的是,这并不重要,因为它是一个bait and switch PCL,这实际上意味着它只是提供了与真正的 DLL 的接口,用于在运行。换句话说,即使 PCL 是 3.2 版,只要界面没有改变,您的游戏仍然会愉快地引用 3.5 版。

    some talk关于在3.6版本中改善这种情况。

    【讨论】:

    • 现在3.6出来了,情况好转了吗?
    • 是的,情况有所改善,但正如我所说,这并不重要。 PCL 版本运行良好,只需添加它一直都有。
    【解决方案2】:

    我注意到 MonoGame 项目默认使用 .Net 4.5 构建。常规类库默认为最新安装的 .Net 版本,在我的例子中是 4.5.2。我可以通过转到其项目属性并将目标框架设置为 4.5 来引用常规类库。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多