在运行时动态加载程序集依赖项时出现问题

2023-11-30

让我尝试解释一下我的问题。我目前正在尝试开发一个用.Net编写的小型“插件框架”(主要是为了进行一些实验)。因此,我们的想法是拥有一个主应用程序,可以通过在主应用程序的特定文件夹“插件”中部署 dll 来添加“插件”。 一切工作正常,插件已正确实例化,但是现在我遇到了问题。 我现在已经部署了一个使用其他第 3 方插件的插件“X”,因此现在我遇到的问题是“X”所需的这些其他第 3 方插件在运行时找不到。因此,我现在的想法是添加一个额外的目录“依赖项”,我也在其中部署所有需要的插件。

所以我的第一个问题是: 如何将程序集加载到应用程序域中(假设我知道它们的路径)它们可以被我的应用程序使用吗?

我尝试通过做类似的事情来解决这个问题:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    //find the path to the assembly and then load and return it by
    //return Assembly.Load("pathToDependencies/failedAssembly.dll");
}

问题是这个事件处理程序现在被激活,args 变量中有“Presentation.Zune.dll”(我使用的是 WPF 应用程序)。看起来该程序集加载失败,但实际问题是另一个 dll。

有人可以建议我更好的方法来解决我的问题吗?我希望我能够充分解释我的情况,否则只是要求进一步澄清。

谢谢, 树里


您可以设置运行时的探测路径,以便它可以找到程序集。设置probing应用程序配置文件中的元素。

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="plugins;dependencies"/>
    </assemblyBinding>
  </runtime>
</configuration>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在运行时动态加载程序集依赖项时出现问题 的相关文章

  • 如何让 LinqToSql 将“索引提示”传递给 sql server?

    由于我们不能相信我们的客户会更新 sql server 中的索引统计信息等 因此我们过去不得不使用索引提示 http www sql server performance com tips hints general p1 aspx 由于我
  • 在 C# 中使用通配符解析相对路径

    在 C 中 如果我有一个目录路径和一个带通配符的相对文件路径 例如 c foo bar and blah cpp 有没有一种简单的方法来获取绝对文件路径列表 例如 c foo blah a cpp c foo blah b cpp 背景 有
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • C# - 方法必须有返回类型

    我在调用 C 中的方法时遇到问题 不断收到消息 方法 计算 必须有返回类型 using System Diagnostics namespace WindowsFormsApplication1 public partial class F
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 如何根据给定的点生成热图

    我想生成 Windows 形式的热图 我有一组点作为输入 如何以最简单的方式做到这一点 谢谢 基于此处已有的答案 此方法允许您指定Colors您希望用作最大和最小颜色 private Color HeatMapColor double va
  • 自定义 IQueryable

    我正在尝试自定义应用程序的实体 使它们具有引用加载它们的 DataContext 的属性 我认为最好的方法是以某种方式创建一个实现 IQueryable 的类 并在其 GetEnumerator 方法中设置实体 datacontext 属性
  • NuGet:包含 .pdb 文件并排除“Content”文件夹

    我已将以下行合并到 CI 构建中在每个构建上创建一个私有 NuGet 包 nuget pack C Projects Test Test vbproj OutputDirectory nas1 NuGet The 读取AssemblyInf
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator
  • 在 C#.NET 应用程序中使用 SQL Server 时间数据类型?

    如何使用 SQLtimeSQL Server 2008 中 C NET 中引入的数据类型 我一直在努力让它发挥作用 但没有成功 这是一个MSDN 文章 http msdn microsoft com en us library bb6751
  • Windows 7 任务栏:捕获缩略图

    是否可以从 Win7 任务栏捕获 实时 缩略图 我想在我的应用程序中显示 另一个窗口的 预览 但如何使用 NET 提取这些预览 Yes MSDN 杂志解释了如何 http msdn microsoft com en us magazine
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 是否可以在 IIS7 Express 中使用自定义主机标头/绑定?

    我正在尝试配置一个新的ASP NET MVC3 using IIS7快递 在我的本地开发机器上 使用自定义域名 eg 我的本地开发机器 打开我的网络浏览器 goto http dev www mydomain com http dev ww
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable

随机推荐

  • 初始化数组时出现堆栈溢出错误[重复]

    这个问题在这里已经有答案了 我有一个简单的方法 void loadContent int test 500000 test 0 1 当我调用这个方法时 出现这个错误 RasterizeEditor exe 中 0x00007FF639E80
  • DataGridView DataBindingComplete 事件的替代方案

    就像声明的那样here the DataBindingComplete每当数据源的内容发生更改或诸如此类的属性发生变化时 就会触发 DataGridView 的事件DataSource变化 这会导致该方法被多次调用 我目前正在使用DataB
  • ListView 中的应用内计费工作流程

    我在 Android 应用程序中实现了应用内计费 有大约 6 种产品 它们就像用户为了在我的应用程序中购买商品而购买的硬币一样 应用程序内的设置和测试工作完美我阅读了所有谷歌文档并按照他们所说的做了 但我的问题是我的产品显示在我称为该函数的
  • jqGrid 多选对于大量本地数据非常慢,jQueryUI 1.8、jQueryUI 1.7 都很好

    我在 ASP NET 页面中使用 jqGrid 并将数据注入到页面上的脚本块中 然后从那里加载 对于这一用例 我们需要立即在屏幕上显示大量数据 其中涉及 300 500 条记录 每行 30 列 对于这种情况 分页不太合适 用户需要能够扫描大
  • 修复了带有单个 DOM 元素的响应式顶部导航/关闭画布导航

    让我们先把小提琴排除在外 建立在基础响应式框架 Fiddle 1 一个导航 元素 但当侧面导航滑出时变得不稳定 Fiddle 2 工作但使用多个导航元素 好吧 我一直在绞尽脑汁试图为以下问题开发优雅的解决方案 1 制作一个响应式 固定的导航
  • 停止龙卷风应用程序

    让我们以 Tornado 主页中的 hello world 应用程序为例 import tornado ioloop import tornado web class MainHandler tornado web RequestHandl
  • 用户窗体在“End Sub”后关闭,而无需调用“Unload Me”

    我有一个用户表单 baseUF 它有多个页面和按钮 它们都执行不同的操作 我让这个 baseUF 是无模式的 因为我希望用户能够在不关闭用户窗体并丢失他们输入的所有数据的情况下使用该工作表 然而 我开始遇到一个问题 这可能是由于 baseU
  • 64 位 COM dll 和 C#/.Net 应用程序之间的免注册互操作

    我正在尝试在 64 位 COM dll 和 C 应用程序之间实现免注册 COM 互操作 在我之前的一个问题的回答中 我得到了帮助 使我能够在 C 的 64 位 COM dll 上成功调用 HelloWorld 方法 但是 这只能通过使用 r
  • 将大型复杂数组从 Python 传递到 C++ - 我的最佳选择是什么?

    2017 06 13 编辑 我尝试按照建议使用 boost 但是在花了超过 3 天的时间尝试编译和链接并失败后 我决定愚蠢的痛苦方法可能是最快且不那么痛苦的方法 所以现在我的代码只是保存了一堆巨大的文本文件 跨文件分割数组和数字的复数 虚部
  • EntityFramework:使用视图来扩展表

    我想使用视图将信息添加到这样的表中 public class PocoTable public int Id get set public partial class ImportStatingRecordError Migration p
  • 像整个链接一样在 下划线

    我试图用一行下划线 a 和 span 我希望这一切都是带有下划线的链接 它在单词和跨度之间留下了一个小空格 但它不应该这样 a href Saber mais span class glyphicon glyphicon menu righ
  • PHP 命令行:max_execution_time 和 memory_limit

    快问 如果我从命令行运行 php 脚本 通过 cron 作业 php somwthing sync php 我是否仍然受到 php max execution time 和 memory limit 的限制 Thanks Nathan 如果
  • Spark Kafka 流媒体问题

    我正在使用maven 我添加了以下依赖项
  • 如何将两个 jquery 对象包装成一个?

    我有两个功能 1 function foo elems elems each function foo selector1 selector2 calling foo 2 function bar elem1 elem2 some logi
  • C# WinForms - 如何将更新从 DataGridView 发送到数据库

    我有一个包含客户表和代理表的 mdb 文件 代理表迄今为止所做的唯一一件事就是填充每个客户的代理下拉列表 我有一个链接到 customerBindingSource 的 DataGridView customerBindingSource
  • 使用 firebase 隐藏第 3 方 API 密钥

    我正在使用 firebase 构建一个网站 这是一个简单的查找服务 只有一个输入元素 可以向第 3 方 API 发出请求 www 3rdparty com api myapikey method 问题是我每秒只能发出 x 个请求 并且无法向
  • PHP 5.2 中的 PHP date_parse_from_format() 替代方案

    由于 date parse from format 仅在 PHP 5 3 中可用 因此我需要编写一个函数来模仿其在 PHP 5 2 中的行为 是否可以为 PHP 5 2 编写此函数并使其以与 PHP 5 3 中完全相同的方式工作 Examp
  • 将函数参数重新声明为变量?

    我似乎无法在网络上的任何地方找到这个问题的答案 将函数参数重新声明为局部变量有什么原因 优点或缺点吗 Example function param1 param2 var param1 param2 etc 对我来说似乎非常多余 但也许我错
  • xmlpullparser 的 Android dalvik 转换

    我正在开发一个 Android 应用程序 对于一个组件 我可以在 Android 之外进行测试 因为它不使用任何 Android 代码 它使用 xstream 我有以下库 xstream1 4 6 xpp3 min 1 1 4c xmlpu
  • 在运行时动态加载程序集依赖项时出现问题

    让我尝试解释一下我的问题 我目前正在尝试开发一个用 Net编写的小型 插件框架 主要是为了进行一些实验 因此 我们的想法是拥有一个主应用程序 可以通过在主应用程序的特定文件夹 插件 中部署 dll 来添加 插件 一切工作正常 插件已正确实例