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


您可以引用MonoGame安装程序安装的程序集
您可以使用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 Windows项目NuGet程序包,我是否会为前两个选择net40并为DirectX平台选择netcore?

(注:在一定程度上,我确实理解MonoGame.Portable的目的是创建一个更简洁的代码库,并具有更多的代码重用性,并且与平台无关,但是与其他库源代码相比,它的作用是对我来说仍然很模糊。)

最佳答案

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

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

主安装程序通常仅以稳定软件包的形式提供,当前以V3.2发行。
(有一个自动更新的安装程序,该安装程序由MonoGame使用的自动构建引擎进行更新,但是通常不建议访问该安装程序,除非您真正了解自己在做什么)

不久前,我开始发起一项计划,也要发布MonoGame库(以及最终的项目模板),这已经被MonoGame核心团队接受,并且没有以MonoGame NuGet官方帐户发布。
当前,该版本提供2个版本,当前的3.2稳定版本仅随每个主要版本进行更新,还有一个dev版本(作为Alpha版),该版本会定期更新或更频繁地进行重大更改。

NuGet软件包的目标与安装程序相同,但不需要在计算机上进行任何安装。

现在由于NuGet的限制,我们无法提供所有可用平台,主要是因为NuGet不提供详细的平台标识,仅提供主要平台类型(Windows,Windows 8,Windows Phone,Android,MonoTouch,MonoMac等),因此没有像Ouya这样的差异。它还目前不支持Linux。
这限制了我们可以在单个程序包中提供的平台,但是数量很少。我们确实讨论过为变种发布第二个软件包,但有人认为这只会使事情变得混乱。

因此,NuGet支持的平台是:


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


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

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

因此,要使用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/

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

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

因此,您可以看到有很多选择,并且该框架正在不断发展。

综上所述,您可以使用几种出色的MonoGame框架:


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


如果要使用可移植库,请使用共享的PCL游戏库,然后按常规创建一个平台项目,并为您的游戏代码引用可移植库。

请随意记录以上问题,我将回答其他相关问题。

希望这可以帮助

关于c# - MonoGame安装的程序集与MonoGame.Binaries NuGet软件包中的程序集有何不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24597341/

10-10 14:19