首页 > 解决方案 > 无法加载文件或程序集 (DarkRift)

问题描述

我一直在努力解决 Unity 中的一个问题,如果有人可以帮助我,我将不胜感激。

我正在使用一个名为 DarkRift 的包,它用于联网和连接客户端与服务器(由 DarkRift 提供)。为了使用 DarkRift 服务器,我需要编写插件。插件基本上是一个 Visual Studio 项目,编译为 .dll 文件,然后将该文件复制到服务器端的某个目录。我使用 DarkRift 已经有一段时间了,并且已经做了很多工作。它工作得很好!但是,我需要使用 Google 的 Firestore 包。

因此,我创建了另一个插件,安装了 Firestore(以及所需的每个包),使用 Firestore 的一个函数编写了一些简单的代码,编译了项目,将 .dll 复制到服务器,然后运行服务器。问题是每当我运行服务器(.exe 文件)时,我都会收到一条错误消息:“无法加载文件或程序集 'Google.Cloud.Firestore, Version=1.0.0.0, ...' 或其依赖项之一。”

使用 Firestore 的任何功能时都会出现此错误。但是,如果我只包含包(使用 Google.Cloud.Firestore;)而不使用它的任何功能,我不会收到任何错误。我用谷歌搜索了这个问题,到处寻找,但无法解决。

谢谢!

标签: c#visual-studiounity3d

解决方案


Firestore 作为Nuget 包分发,它确实具有依赖项。您是否也将所有这些依赖项复制到服务器?也可能是框架不兼容。

要获取有关此类问题的更多详细信息,您可以在AppDomain.AssemblyResolve上注册一个日志事件处理程序,该处理程序会在程序集解析失败时触发。

您还可以使用dnSpy之类的工具来挖掘有问题的程序集 - 它向您显示各种元数据,并且可以反编译 CIL,这对于调试第三方代码中的奇怪行为非常有用。

.Net 中的程序集加载有点慢,所以它只在需要时加载它们。因此,当没有代码引用程序集时,解析不会失败。


推荐阅读