- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个“主”程序,它使用反射动态加载我自己的“plugin.dll”文件。 “plugin.dll”文件通过使用 visual studio 引用引用第三方“device.dll”。只要“device.dll”和“plugin.dll”与“Main”程序位于同一文件夹中,或者“Main”程序引用了“plugin.dll”,一切正常。但是,一旦我将“device.dll”文件移动到另一个文件夹,我就会收到以下错误消息:“无法加载文件或程序集或其依赖项之一。系统找不到指定的文件。”出现问题是因为程序没有找到“device.dll”文件。“复制本地”属性或“引用路径”对此问题没有任何影响。我知道我必须指定“device.dll”的路径,但如果不将“plugin.dll”和“device.dll”放入 GAC(全局程序集缓存),我找不到方法。 GAC 不是一个解决方案,因为第三方 dll 也必须是强名称的(分解并重新组装),这是版权许可所不允许的。
其他详细信息:使用 visual studio 2013 和 .Net framework 4.0FUSLOGVW 没有记录任何错误(知道为什么吗?)。
期待您的建议,提前致谢。
最佳答案
检查 AppDomain.AssemblyResolve
事件。这是您可以执行自定义操作以在非默认位置加载程序集的理想点。
我在此处添加链接的 MSDN 文章的引用:
It is the responsibility of the ResolveEventHandler for this event to return the assembly that is specified by the ResolveEventArgs.Name property, or to return null if the assembly is not recognized. The assembly must be loaded into an execution context; if it is loaded into the reflection-only context, the load that caused this event to be raised fails.
归根结底,这意味着您的应用程序或服务将在无法使用默认程序集发现方法 (AppDomain. BaseDirectory
、全局程序集缓存...)。
一旦引发所谓的事件,您需要返回一个 Assembly
实例,您的工作就是决定如何加载程序集(从文件、流、字节...)。也就是说,如果您将插件程序集放在某个子目录中或谁知道在哪里,您可以使用正确的完整程序集路径调用 Assembly.Load
来加载它们并避免程序集加载问题。
关于c# - 无法加载文件或程序集或其依赖项之一。该系统找不到指定的文件。 (不允许 GAC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899089/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!