首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MonoGame安装的程序集与MonoGame.Binaries NuGet包中的程序集有何不同?

MonoGame安装的程序集与MonoGame.Binaries NuGet包中的程序集有何不同?
EN

Stack Overflow用户
提问于 2014-07-06 15:20:45
回答 1查看 3.1K关注 0票数 2

据我所知,有几种方法可以将单人游戏程序集放到MonoGame项目中:

  • 可以引用MonoGame安装程序安装的程序集。
  • 您可以使用MonoGame.Binaries NuGet包,然后必须引用包中的DLL。
  • ..。也可以使用MonoGame.Portable NuGet包。

这三种选择的区别是什么?他们之间有什么关系?如何在项目中使用它们?

我在库方面的混乱的一个很好的例子可以在MonoGame.Binaries和安装程序安装的程序集的例子中找到。据我所知,MonoGame.Binaries似乎没有提供与安装程序相同的粒度级别;例如:

  • 在MonoGame安装程序中,有按平台划分的程序集:AndroidiOSLinuxWindowsWindowsGLe 224等等。
  • 从MonoAndroid,MonoMac、MonoTouch、net40、netcore和E 138wp8E 239

在我看来,Monogame.Binaries包看起来已经过时了,但是如果它不过时,并且我想要使用NuGet包的方便性来设置一个适当的LinuxWindowsGL和/或DirectX Windows项目,我会选择net40作为前两个版本,而netcore用于DirectX平台吗?

(NB:,在某种程度上,我确实理解MonoGame.Portable的目的是要创建一个更干净的代码库,更多的代码重用是独立于平台的,但与其他库源相比和对比,它的作用对我来说还是相当模糊的。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 18:49:02

感谢您询问有关MonoGame NuGet包的信息。

是的,MonoGame可以通过安装主MonoGame安装程序(适用于MonoGame)来使用,该安装程序使用Visual安装所有受支持的平台和项目模板。(也有一个MonoDevelop包,但这已经过时了)

主安装程序通常只能作为一个稳定的包使用,目前作为V3.2发布。(有一个自动更新的安装程序,由自动生成引擎MonoGame使用更新,但通常不建议访问它,除非您真正知道自己在做什么)

不久前,我开始着手发布MonoGame库(并最终发布项目模板),过了一段时间,MonoGame核心团队接受了这一点,并且没有在官方的MonoGame NuGet帐户下发布。目前,这提供了2个版本,目前的3.2稳定版本只更新了每个主要版本,还有一个开发版本(作为alpha版本)定期更新或更频繁地进行重大更改。

NuGet包与安装程序有相同的目标,但事先不需要机器上的任何内容。

现在,由于NuGet的局限性,我们无法提供所有可用的平台,主要原因是NuGet没有提供详细的平台标识,只提供主要平台类型(Windows、Windows 8、Windows、Android、MonoTouch、MonoMac等),因此没有像Ouya这样的差异。它目前也不支持Linux。这就限制了我们可以在一个包中交付的平台,但只有一点。我们确实讨论了为变体发布第二个包的问题,但人们认为这只会使事情变得混乱。

因此,NuGet支持的平台是:

  • Windows GL (.Net 4)
  • Windows 8 (WINRT)桌面和RT
  • Windows Phone 8(由于某些依赖问题,尚不支持8.1)
  • 安卓
  • iOS
  • MacOs

基本DLL在MonoGame.Binaries包中提供

我们现在还在新的MonoGame NuGet包中为空解决方案提供项目模板文件(它还为DLL安装二进制包),这将添加每个平台所需的任何特定于平台的文件和配置。它还支持上述所有平台。

因此,要从MonoGame中使用NuGet,您可以使用使用MonoGame安装程序构建的现有项目,然后删除所有引用并安装稳定的MonoGame.binaries NuGet或MonoGame.binaries alpha (这意味着在部署新版本/补丁时会通知您新的版本/修复)。或者,您可以从一个空项目开始,只需安装MonoGame NuGet,它还将安装项目文件以及dll的文件。

是你的选择。

至于MonoGame.Portable NuGet包,这完全是由我来维护的(直到我喝了酒,并请MG团队将其包括在内)。这是MonoGame的一个特殊版本,可以在PCL (可移植类库)中使用它来创建一个共享库,以包含游戏代码以从平台抽象它。这里有一篇文章描述了它的用途:http://darkgenesis.zenithmoon.com/monogame-building-portable-solutions/

如果你想用这种方式管理你的多平台项目,使用便携模式来构建你的游戏只是另一个选择。

至于未来,MonoGame团队和它的贡献者认识到,关于平台的使用存在一些文档空白,长期的目标是改进文档的范围,但这是一个缓慢的过程。第一个解决方案是通过创建一个新的示例存储库来促进使用MonoGame构建多平台解决方案的良好标准。如果您选择帮助,这个存储库还有几个正在开发中的示例。我在这里发布了新的样本,http://darkgenesis.zenithmoon.com/monogame-building-portable-solutions/

因此,正如您所看到的,有多种选择,框架也在不断增长。

总之,您有几个选项可以使用可怕的MonoGame框架:

  1. 使用MonoGame主安装程序并使用内置的项目模板
  2. 使用安装程序模板创建一个解决方案,并用稳定的NuGet版本替换DLL。获得新的稳定版本的自动通知
  3. 使用安装程序模板创建一个解决方案,并用dev / alpha NuGet版本替换DLL,获得新的dev版本的自动更新
  4. 使用一个空白项目,并使用上述任何一个具有相同效果的NuGet版本,但是您不需要安装程序。注意,这在MonoDevelop中也适用于NuGet :D
  5. 下载并使用源代码Luke

如果您想使用便携式库,那么使用一个共享的PCL游戏库,然后创建一个正常的平台项目,并引用可移植库作为游戏代码。

请随时记下上面提到的任何问题,我会回答其他相关的问题。

希望这能有所帮助

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24597341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档