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

时间:2014-07-06 15:20:46

标签: c# nuget monogame

据我所知,有几种方法可以将MonoGame's程序集放入MonoGame项目中:

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

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

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

  • 在MonoGame安装程序中,您的程序集按平台划分: Android iOS Linux Windows WindowsGL
  • 来自MonoGame.Binaries NuGet套餐,您只有: MonoAndroid MonoMac MonoTouch net40 netcore wp8

对我而言,看起来Monogame.Binaries包已过时,但如果不是,我想设置一个合适的LinuxWindowsGL和/或DirectX { {1}}项目使用NuGet包的便利性,我只需为前两个选择 net40 ,为DirectX平台选择 netcore 吗?

NB:在某种程度上,我确实理解Windows的目的是创建一个更清晰的代码库,其中包含更多与平台无关的代码重用,但是与其他图书馆资源相比,它的作用对我来说仍然很模糊。)

1 个答案:

答案 0 :(得分:9)

感谢您询问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,等),所以没有像欧亚那样的差异。它目前还不支持Linux。 这限制了我们可以在单个包中提供的平台,但只有一点。我们确实讨论过为各种各样的方法发布第二个包,但是我觉得这只会让事情变得混乱。

因此NuGet支持的平台是:

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

基本D​​LL在MonoGame.Binaries包中提供

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

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

至于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. 使用安装程序模板创建解决方案,并将DLL替换为稳定的NuGet版本。获得新稳定版本的自动通知
  3. 使用安装程序模板创建解决方案,并将DLL替换为dev / alpha NuGet版本,获取新开发版本的自动更新
  4. 使用空白项目并使用上述任一NuGet版本具有相同的效果,但您不必拥有安装程序。请注意,这也可以在MonoDevelop中使用NuGet:D
  5. 下载并使用Source Luke
  6. 如果您想使用便携式库,请使用共享PCL游戏库,然后正常创建平台项目并引用您的游戏代码的便携式库。

    随时记下上述任何问题,我将回答任何其他相关问题。

    希望这有帮助