c# - 无法加载文件或程序集 (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;)而不使用它的任何功能,我不会收到任何错误。我用谷歌搜索了这个问题,到处寻找,但无法解决。
谢谢!
解决方案
Firestore 作为Nuget 包分发,它确实具有依赖项。您是否也将所有这些依赖项复制到服务器?也可能是框架不兼容。
要获取有关此类问题的更多详细信息,您可以在AppDomain.AssemblyResolve上注册一个日志事件处理程序,该处理程序会在程序集解析失败时触发。
您还可以使用dnSpy之类的工具来挖掘有问题的程序集 - 它向您显示各种元数据,并且可以反编译 CIL,这对于调试第三方代码中的奇怪行为非常有用。
.Net 中的程序集加载有点慢,所以它只在需要时加载它们。因此,当没有代码引用程序集时,解析不会失败。
推荐阅读
- azure-active-directory - Microsoft 机器人构建器框架 AWS API 网关
- django - 一页上的 Django DetailView 更新不起作用 - NoReverseMatch 错误
- ruby-on-rails - 如何修复 Rails 中的 500 内部服务器错误
- unity3d - 当一个物体用刚体和盒子碰撞器撞击另一个物体时,统一会自行暂停
- python - Visual Studio 代码和 fastai 错误
- ios - 如何使用 NSPersistentCloudKitContainer 预加载 Core Data SQLite 文件
- node.js - 每次在 nodeJS 中调用云函数时都会创建新对象(使用 TypeScript)
- python - 尝试为烧瓶应用程序构建 docker 时出错
- algorithm - 在两个多边形之间插入一个多边形
- java - 无法访问扩展 JPanel 的类的公共成员