簡體   English   中英

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

[英]How are the assemblies installed by MonoGame different from those in the MonoGame.Binaries NuGet package?

據我所知,有幾種方法可以讓MonoGame的程序集進入MonoGame項目:

  • 您可以引用MonoGame安裝程序安裝的程序集
  • 您可以使用MonoGame.Binaries NuGet包,然后必須從包中引用DLL。
  • ...或者您可以使用MonoGame.Portable NuGet包。

這三個選項有什么區別? 它們如何相互關聯? 它們應該如何用於項目?

我可以在MonoGame.Binaries與安裝程序安裝的程序集的示例中找到關於庫的混淆的一個很好的例子。 MonoGame.Binaries似乎沒有提供與安裝程序相同的粒度級別,至少據我所知; 例如:

  • 從MonoGame安裝程序中,您可以按平台划分程序集: AndroidiOSLinuxWindowsWindowsGL等。
  • MonoGame.Binaries NuGet包中你只有: MonoAndroidMonoMacMonoTouchnet40netcorewp8

對我來說,Monogame.Binaries軟件包看起來已經過時,但如果不是,我想使用NuGet軟件包的便利設置一個合適的LinuxWindowsGL和/或DirectX Windows項目,我會不會只需選擇net40前兩個和磊科為平台的DirectX?

注意:在某種程度上,我確實理解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。 這限制了我們可以在單個包中提供的平台,但只有一點。 我們確實討論了為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游戲庫,然后像平常一樣創建一個平台項目,並引用你的游戲代碼的便攜式庫。

隨意記下上述任何問題,我會回答任何其他相關問題。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM