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

Sea*_*inn 2 c# nuget monogame

据我所知,有几种方法可以让MonoGame的程序集进入MonoGame项目:

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

这三个选项有什么区别?它们如何相互关联?它们应该如何用于项目?

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

  • 从MonoGame安装程序中,您可以按平台划分程序集:Android,iOS,Linux,Windows,WindowsGL等.
  • 从MonoGame.BinariesNuGet包中你只有:MonoAndroid,MonoMac,MonoTouch,net40,netcore和wp8.

对我来说,它看起来像Monogame.Binaries包是过时的,但如果它不是,我想建立一个适当的Linux,WindowsGL和/或DirectX Windows使用NuGet包的便利项目,我会简单地选择net40对于DirectX平台的前两个和netcore?

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

Dar*_*ide 10

感谢您询问MonoGame NuGet套餐.

是的,可以通过安装主要的MonoGame安装程序(适用于Windows)来使用MonoGame,该安装程序使用Visual Studio安装所有支持的平台和项目模板.(还有一个MonoDevelop软件包,但目前已经过时了)

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

前段时间我开始发布一个MonoGame库(最终是项目模板)的计划,一段时间后,MonoGame核心团队接受了这一计划,并且没有在官方的MonoGame NuGet帐户下发布.目前,这提供了2个版本,当前的3.2稳定版本仅在每个主要版本中更新,还有一个开发版(作为alpha版),它会定期更新或更频繁地进行重大更改.

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

现在由于NuGet的限制,我们无法提供所有可用的平台,主要是因为NuGet不提供详细的平台识别,只提供主要平台类型(Windows,Windows 8,Windows Phone,Android,MonoTouch,MonoMac等),因此没有像Ouya这样的差异.它目前还不支持Linux.这限制了我们可以在单个包中提供的平台,但只有一点.我们确实讨论了为varient发布第二个包,但是我觉得这会让事情变得混乱.

所以NuGet支持的平台是:

  • Windows GL(.Net 4)
  • Windows 8(WINRT)桌面和RT
  • Windows Phone 8(由于某些依赖性问题,尚不支持8.1)
  • Android的
  • iOS版
  • 苹果系统

基本DLL是在MonoGame.Binaries包中提供的

我们现在还在新的MonoGame NuGet包中安装了空模板的项目模板文件(它还安装了DLL的Binaries包),这将添加每个平台所需的任何特定于平台的文件和配置.它还支持所有上述平台.

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

至于MonoGame.Portable NuGet套餐,这完全由我维护(直到我为MG团队提供葡萄酒和用餐时才包括它).这是MonoGame的特殊版本,可以在PCL(可移植类库)中使用,以创建一个共享库来包含您的游戏代码,以便从平台中抽象出来.有一篇帖子描述了它在这里的使用:http://darkgenesis.zenithmoon.com/monogame-building-portable-solutions/.

如果您希望以这种方式管理多平台项目,使用Portable模式构建游戏只是另一种选择.

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

因此,您可以看到有很多选项,框架也在不断增长.

总而言之,您有几种方法可以使用令人敬畏的MonoGame框架:

  1. 使用MonoGame主安装程序并使用内置项目模板
  2. 使用安装程序模板创建解决方案,并将DLL替换为稳定的NuGet版本.获得新稳定版本的自动通知
  3. 使用安装程序模板创建解决方案,并将DLL替换为dev/alpha NuGet版本,获取新的dev版本的自动更新
  4. 使用空白项目并使用上述任一NuGet版本具有相同的效果,但您不必拥有安装程序.请注意,这也可以在MonoDevelop中使用NuGet:D
  5. 下载并使用Source Luke

如果你想使用Portable库,那么使用共享的PCL游戏库,然后像平常一样创建一个平台项目,并引用你的游戏代码的便携式库.

随意记下上述任何问题,我会回答任何其他相关问题.

希望这可以帮助