【问题标题】:How to get Unity3D 2018 (or higher) to work with MongoDB C# driver?如何让 Unity3D 2018(或更高版本)与 MongoDB C# 驱动程序一起使用?
【发布时间】:2019-04-26 13:38:10
【问题描述】:

我正在尝试让 Unity3D 与 MongoDB 一起使用,但我遇到了太多版本兼容性问题。

我的 Unity 使用的是 Framework 版本 4.6.1。使用从 NuGet 包管理器下载的 C# 驱动程序 2.8.0。 MongoDB.Driver 包有两个 netstandard1.5 和 net452 文件夹。 MongoDBDriver 有 net452 和 netstandard1.5。同样,MongoDB.driver.Core.2.8.0、Dnsclient 和 MongoDB.Driver.GridFS 具有多个版本的框架特定 .dll。 我的 Unity 设置为 .Net 4.x(脚本运行时版本)和 .Net 标准 2.0 API 兼容性。

使用这些,在编写脚本时无法识别 MongoDB 名称本身。

我从 GitHub (2.8.0) 下载了 C# 驱动程序代码并重新构建了它。复制了net 1.5 版本的.dll,但它也不起作用。

我从https://drive.google.com/file/d/16cLVJi0VZpplSS8MDnRcUeVnYuvxypBm/view 获取了.DLL。它构建良好(运行时版本 .Net 3.5 和 API 兼容标准 2.0)。但它因“未知主机”而失败,可能是由于与 Dnsclient 的一些兼容性问题 - 由 MongoDB.Driver.core 使用。

如果有人知道正确的版本组合或构建过程,请告诉我在 MongoDB C# 驱动程序代码中要修改的特定代码 - 使其与 Unity3D 一起使用。

我在下面的链接中看到了关于类型加载异常的答案。我也遇到过。但这并没有解决我的问题。 C# mod dependency throws 'TypeLoadException' when instantiated?

【问题讨论】:

标签: mongodb unity3d


【解决方案1】:

所以现在再次解释一下: 我已经弄清楚如何在 .Net 4.x 中运行 MongoDb。 (Unity 18.3 和 19.1 测试) 您必须将这些 dll 包含在 Plugins 文件夹中:

DnsClient.dll  
MongoDB.Bson.dll  
MongoDB.Driver.Core.dll  
MongoDB.Driver.dll  
System.Buffers.dll  

要连接到数据库(替换用户名、密码、DATABASE_NAME 和本地主机(仅限本地主机,如果您将数据库托管在其他地方)):

using MongoDB.Driver;

private const string MONGO_URI = "mongodb://username:password@localhost:27017";
private const string DATABASE_NAME = "testDatabase";
private MongoClient client;
private IMongoDatabase db;

client = new MongoClient(MONGO_URI);
db = client.GetDatabase(DATABASE_NAME);

您可以在我的 github 上下载 dll:https://github.com/Julian23517/Unity-mongo-csharp-driver-dlls 我尽量保持最新。

【讨论】:

  • 它与 Unity 2018.3 Runtime 4.71 和目标 API 兼容级别 .Net 2.0 配合得非常好。非常感谢。
  • 很高兴。支持并接受答案将不胜感激:)
  • 我正在尝试在 WebGL 上托管这个游戏。这似乎不适用于该目的。请建议正确的堆栈和库以使其正常工作。
  • 我不是为 WebGL 构建的,所以我没有测试它,但你可以从这里尝试 dll:github.com/mongodb/mongo-csharp-driver/releases/download/v2.8.1/…。如果有效,您可以提供反馈。 Dll 是: MongoDB.Bson.dll MongoDB.Driver.Core.dll MongoDB.Driver.dll MongoDB.Driver.GridFS.dll MongoDB.Driver.Legacy.dll
  • 嗨,你有一个链接来解释你是如何建立统一的吗?出于某种原因,这些驱动程序对我不起作用……使用 1.x api 的旧驱动程序可以。
【解决方案2】:

首先:从这个链接下载驱动程序:http://ge.tt/7xQdxUj2
Unity 4 或 5 的 1.11.0。推荐! 此驱动程序需要 .NET 2.0 API 兼容级别,并且不适用于 .NET 2.0 子集。

那么您可以从此 repo 获得更多信息:
https://github.com/janfiess/unity-mongodb

【讨论】:

  • 对于 webGL,我使用了带有 Flask 的 apython REST 服务器,然后使用了基于 HttpWebRequest 的 REST 调用。这工作得很好。因此无法测试驱动程序。如果我能测试它,会及时通知你。
  • @IshwaraBhat 您是否有任何代码示例供您使用,我们将不胜感激
  • 不幸的是,我的代码太粘在整个代码库上。我建议客户端这样做:github.com/oswaldocarvalho/unity-restful-client。您需要构建一个与 mongo DB 交互的 python(或 nodeJS)后端服务器。虽然学习新语法很痛苦,但做起来相当简单。
  • 不过,对于后端来说,云学习曲线似乎是不可避免的。即获取云帐户、权限,然后熟悉 aws/google cloud/其他云。这是一个示例后端代码github.com/serverless/examples/tree/master/…。您的解决方案需要两者兼有。
【解决方案3】:

不知道为什么都发送他们的 github。也许是为了给自己做广告。但是在 NuGet 中可以找到所有用于 MongoDB 的 dll。这是获取新版本的正确位置,因为 Mongo 开发人员自己管理它们。我绝对不确定这些发送 github 的人是否会保持所有 dll 版本都是最新的。

https://www.nuget.org/profiles/MongoDB

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 2018-01-13
    • 2015-04-16
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多