Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MonoGame安装的程序集与MonoGame.Binaries NuGet包中的程序集有何不同?_C#_Nuget_Monogame - Fatal编程技术网

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

C# MonoGame安装的程序集与MonoGame.Binaries NuGet包中的程序集有何不同?,c#,nuget,monogame,C#,Nuget,Monogame,据我所知,有几种方法可以将程序集放入MonoGame项目中: 您可以引用MonoGame安装程序安装的程序集 您可以使用NuGet包,然后必须引用包中的DLL 。。。或者您可以使用NuGet包 这三个选项之间有什么区别?它们之间的关系如何?如何在项目中使用它们 在MonoGame.Binariesvs.安装程序安装的程序集的例子中,可以找到一个很好的例子来说明我对库的混淆单游戏。二进制文件似乎没有提供与安装程序相同的粒度级别,至少据我所知;例如: 从MonoGame安装程序中,您有按平台划

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

  • 您可以引用MonoGame安装程序安装的程序集
  • 您可以使用NuGet包,然后必须引用包中的DLL
  • 。。。或者您可以使用NuGet包
这三个选项之间有什么区别?它们之间的关系如何?如何在项目中使用它们

MonoGame.Binaries
vs.安装程序安装的程序集的例子中,可以找到一个很好的例子来说明我对库的混淆<代码>单游戏。二进制文件似乎没有提供与安装程序相同的粒度级别,至少据我所知;例如:

  • 从MonoGame安装程序中,您有按平台划分的程序集:AndroidiOSLinuxWindowsWindowsGL
  • MonoGame.Binaries
    NuGet软件包中,您只有:monoadroidmonoacMonoTouchnet40netcorewp8
在我看来,Monogame.Binaries软件包已经过时了,但如果不是,我想利用NuGet软件包的便利性设置一个合适的
Linux
WindowsGL
,和/或DirectX
Windows
项目,我会简单地选择net40作为前两个,选择netcore作为DirectX平台吗


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

感谢您询问有关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。 这限制了我们可以在一个包中交付的平台,但只有一小部分。我们确实讨论过为各种产品发布第二个产品包,但有人认为这只会让事情变得混乱

因此,NuGet支持的平台包括:

  • Windows GL(.Net 4)
  • Windows 8(WINRT)桌面和RT
  • 由于某些依赖关系,Windows Phone 8(8.1)尚不受支持 (问题)
  • 安卓
  • iOS
  • 马科斯
基本DLL在MonoGame.Binaries包中提供

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

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

至于MonoGame.Portable NuGet软件包,这完全由我维护(直到我为MG团队提供葡萄酒和晚餐时)。这是MonoGame的一个特殊版本,可以在PCL(可移植类库)中使用它来创建一个共享库,以包含游戏代码,从而将其从平台中抽象出来。这里有一篇文章描述了它的用途:

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

现在,关于未来,MonoGame团队及其贡献者认识到平台使用方面存在一些文档空白,长期目标是改进文档范围,但这是一个缓慢的过程。 这其中的第一个环节是创建一个新的示例库,以推广使用MonoGame构建多平台解决方案的良好标准。如果您选择提供帮助,此存储库还有其他几个示例正在开发中。我在这里发布了关于新样品的信息

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