WPF Prism - 管理应用程序中的模块

2024-05-01

将 Prism 与 WPF 结合使用,我希望允许用户从存储库中选择他们想要使用的模块。每个模块本质上都是一个附加组件,选择要使用的模块只需将其移动到 DLL 的“模块”文件夹中即可加载。

但是,在应用程序运行时尝试移动 DLL 时,会引发错误,因为此时 DLL 正在使用中。如何解决这个问题并允许用户随意添加/删除模块?


一旦程序集被加载到AppDomain,它不会(不能)被卸载,直到AppDomain被拆毁了......我想这是你的问题。

如果你在网上查看,有一些技巧可以解决这个问题......

创建额外的 AppDomain

创建一个额外的AppDomain然后你可以将你的程序集加载到......当你完成后你只需调用Unload关闭AppDomain这将释放程序集。

然而,您希望从其他类型访问的类型AppDomains必须源自MarshalByRefObject这样你的对象是可远程的......并且来自其他应用程序域的调用可以被编组。

  • C#中使用AppDomain动态加载和卸载dll https://stackoverflow.com/questions/6578170/using-appdomain-in-c-sharp-to-dynamically-load-and-unload-dll

将程序集加载到 MemoryStream 中

这里有一个非常有趣的技术......它将程序集加载到MemoryStream首先,然后它让 .NET 从MemoryStream...这意味着磁盘上的“文件”没有被锁定。

  • http://social.msdn.microsoft.com/Forums/en-US/clr/thread/093c3606-e68e-46f4-98a1-f2396d3f88ca/ http://social.msdn.microsoft.com/Forums/en-US/clr/thread/093c3606-e68e-46f4-98a1-f2396d3f88ca/

  • 如何在不使用 AppDomains 的情况下实现 .net 插件? https://stackoverflow.com/questions/458699/how-do-i-implement-net-plugins-without-using-appdomains

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF Prism - 管理应用程序中的模块 的相关文章

  • 如何正确对齐 WPF GeometryGroup 中的路径?

    我正在使用一个GeometryGroup在圆的中心绘制一个符号 下面的示例显示了我在对此进行实验时的尝试之一 它具有从同一原点 32 32 出发的三条直线
  • 拖动 Window 时无法可靠地调用 LocationChanged

    为了实现对接 我依靠监听 Window LocationChanged 事件来检测在屏幕上拖动的窗口的位置变化 但一位用户报告说 对接在他们的机器上无法工作 事实证明 他们在 Windows 性能选项中禁用了 拖动时显示窗口内容 因此只有在
  • 捕获多点触摸屏上的双击触摸

    我发布了另一个问题 如何通过监视 TouchDown 事件的触摸之间的时间跨度来 手动 捕获双击 但它有很多问题 有谁知道在多点触摸屏上捕获双击的标准 Microsoft 方式 事件 多谢 Dan 我检查了点击位置和秒表的组合 效果非常完美
  • 如何绑定到 DynamicResource 以便可以使用 Converter 或 StringFormat 等? (修订版4)

    注意 这是对早期设计的修订 该设计具有无法在某种样式中使用的限制 从而大大削弱了其有效性 然而 这个新版本现在可以使用样式 本质上是让您可以在任何可以使用绑定或动态资源的地方使用它并获得预期的结果 从而使其更加有用 从技术上讲 这不是一个问
  • 如何在不修改以前的文本的情况下更改 WPF RichTextBox 中的 FontFamily

    当您使用 RichTextBox 的 FontFamily 属性时 它会更改 FlowDocument 内整个内容的 FontFamily 就像执行 EditingCommands ToggleBold 这样的命令一样 它仅更改插入符号下的
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd
  • WPF DataGrid 排序后滚动到顶部

    我有一个使用数据网格的 Net 4 0 WPF 应用程序 目前 按列排序后 网格的滚动位置保持在排序前的位置 对于此应用程序 我需要在任何排序后滚动到网格顶部 我尝试过像这样处理排序事件 Private Sub myDataGrid Sor
  • 获取颜色位置的深度,Kinect SDK

    我正在寻找方法 尽快 从 Kinect 相机获取颜色像素的相应深度 我找到了 MapDepthFrameToColorFrame 函数 但这只给我特定深度位置的颜色 我想要相反的颜色 我想要这个的原因是我将能够单击 RGB 图像上的某个位置
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • 如何将 WPF 3.0 下构建的应用程序转换为 4.5 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 WPF 3 0 中构建了一个应
  • 带有移动向前/向后按钮的自定义列表框

    我有一个带有左 右重复按钮的自定义列表框 可以使用内容模板滚动其内容 如下所示
  • 数据绑定到代码隐藏中的目标 CLR 属性

    在代码隐藏中绑定到依赖属性很容易 你只需创建一个新的System Windows Data Binding对象 然后调用目标依赖对象的SetBinding method 但是 当我们绑定的属性是 CLR 属性并且您无法提供Dependenc
  • 如何在 WPF 中设置覆盖全局样式的特定控制元素设置?

    我通过应用程序范围的资源字典为应用程序中的按钮定义了全局样式 样式如下所示 来自另一个 SO 示例
  • GridSplitter 从右侧调整大小 - 奇怪的行为

    使用 Kaxaml 从左侧调整大小可以按预期工作
  • 如何在Phone类库项目中添加ResourceDictionary并访问它

    我正在开发一个项目 其中我有一个引用图书馆项目的子项目 在我的库项目 电话类库 中 如何创建 ResourceDictionary xaml 其中我需要添加一些样式并在 xaml 文件和 cs 文件中使用它 我需要访问 xaml 文件中的
  • 来自资源中 ImageSource 的 System.Drawing.Image

    我的问题与这个非常相似 wpf图像资源以及运行时在wpf控件中更改图像 https stackoverflow com questions 940592 wpf image resources and changing image in w
  • 将 Combobox 控件绑定到 DataGrid 中的单独源

    我尝试在 DataGrid 中使用 ComboBox 这将允许用户选择来自不同表的值 我使用 ViewModel 类作为 DataContext 其中包含一个用于终端的 ObservableCollection 和另一个用于 Termina
  • 如何识别单击的按钮属于哪个列表框项?

    在 WPF 编程中 我在编写按钮单击事件处理程序时遇到问题 因为该按钮位于列表框项目 数据模板的一部分 内 当单击该按钮时 我无法判断它属于哪个项目 有什么解决办法吗 求救 您似乎已将列表框绑定到集合 并且您的按钮是数据模板或项目模板的一部
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时

随机推荐

  • 形状为 (N,1) 的数组与形状为 (N) 的数组有什么区别?以及两者之间如何转换?

    来自 MATLAB 背景的 Python 新手 我有一个 1 列数组 我想将该列移到 3 列数组的第一列中 如果我有 MATLAB 背景 我会这样做 import numpy as np A np zeros 150 3 three col
  • 重新创建 svn 存储库

    在一次重大服务器故障之后 svn 存储库被破坏 我的工作版本是最新版本 从我的工作版本重新创建 svn 存储库的方法是什么 在新服务器上安装 svn 并尝试我的工作副本之后 svn switch NEW SVN PATH 我收到一个错误 R
  • 在 Idle shell 中导入模块

    我正在尝试学习 python 但在导入模块时遇到问题 我有一个 pyc 文件 我正在尝试将其导入到名为 dfa pyc 的空闲 shell 中 我将该文件放在名为 xyz 的文件夹中 我使用以下命令导航到该文件夹 os chdir User
  • uWSGI 说:“ImportError:没有名为 wsgi 的模块”

    当uWSGI启动时 它会写入 ImportError No module named wsgi 我的 uwsgi xml
  • 数据网格中的主键始终为零

    我们正在VS2012中使用实体框架 DB First 开发WPF应用程序 我们在数据网格视图中遇到问题 我们从数据源中拖动了一个数据网格 这创建了一个绑定到该特定表的数据网格 该表有两列 一列是 TransporterID 它是 PK 是自
  • 在SSL模式下使用apache kafka

    我正在尝试在 SSL 1 way 模式下设置 kafka 我已经阅读了官方文档并成功生成了证书 我将记下两种不同情况的行为 此设置只有一名经纪人和一名动物园管理员 案例 1 经纪人间通信 明文 我的相关条目server properties
  • 将自定义值存储在 EKEvent(iPhone 日历)中

    我的应用程序与设备日历集成 当新项目添加到我的应用程序时 我们会为此项目创建一个日历条目 如果项目被编辑 我们需要更新日历项目 我现在所做的是将 GUID 放入 EKEvent Notes 中 但显然这对用户是可见的 因此我们添加文本 请勿
  • 使用 Selenium 的 Chrome 驱动程序错误:无法发现打开的页面

    运行 Selenium 测试时 我收到与 Chrome 驱动程序相关的错误 错误消息是 无法发现打开的页面 直到昨晚 Selenium 测试都运行良好 问题似乎是在前一天重新启动服务器后开始的 我无法在本地机器上重现此错误 从服务器上的命令
  • Mercurial hook 的操作类似于“changegroup”,但仅在推送时?

    我们已经构建了一个变更集传播机制 但它依赖于捆绑和解除捆绑新变更集 如果我们要使用changegroup钩子 那么它会导致循环行为 因为钩子是运行的在拉 推或解绑期间 http mercurial selenic com wiki Hook
  • 德尔福:idHttp+SSL

    请解释一下如何使用 SSL https 从服务器下载文件 我在互联网上没有找到合适的答案 每个人都说 TIdSSLIOHandlerSocket 但我只有 TIdSSLIOHandlerSocketOpenSSL 如果我使用 TIdSSLI
  • html或css中的倾斜对角线?

    I want to make a Table like this 是否可以添加一个倾斜的对角边框在表中 基于CSS3 线性渐变 http dev w3 org csswg css images 3 linear gradients解决方案
  • 秘密名称不支持特殊字符

    我有一个要求 需要将我的秘密名称存储为 fname lname 但是当我尝试使用下划线时 出现以下错误 为了暂时绕过该错误 我编写了一个实用程序来将下划线转换为连字符 反之亦然 有什么原因不支持下划线等基本特殊字符吗 az keyvault
  • 如何包含来自其他域的一个 php 文件

    我在同一台服务器上有两个域 www domain com www domain com 我有一个index1 php在拳头服务器中 现在我需要包含该文件index2 php驻留在域2中 如何使用 php 代码 包括 要求 不可能在另一台服务
  • 无论如何,为什么要处置一个肯定很快就会被处置的物体呢?

    假设我有一个程序 例如单击按钮 我创建了一个 Graphics 对象 显然我应该处理掉它 例如 using Graphics gr this CreateGraphics 或通过调用 Dispose in the finallytry ca
  • 资源 ID #4 PHP MYSQL

    result mysql query SELECT indvsum sum1 indvsum sum2 FROM SELECT SUM Cash AS sum1 SUM Bank AS sum2 FROM players indvsum e
  • PhysicsFS 是否独立于平台?

    我正在考虑在我的游戏引擎项目中使用PhysicsFS 但我想首先确保它完全独立于平台 这是因为我想在完成 Windows 代码后将我的引擎移植到一些相当不起眼的平台 例如 Wii Homebrew 根据开发者提供的官方规格他们的网站 htt
  • 无法使用php连接到mongodb数据库用户

    我有一个正在运行的 mongodauth true在我的服务器上 如果我登录到我的管理员用户 从管理数据库 则获取数据没有问题 但如果我将第一行替换为 connection new Mongo mongodb mydbadmin email
  • 将开始列和结束列合并为一列

    我已经上下搜索了好几个星期 试图找到解决我的问题的方法 我的问题如下 A 有一个表格 其中包含来自车辆遥测提供商的开始和结束坐标以及日期 我需要将它们合并到一列中 以便我们的报告解决方案能够绘制它们 一些示例数据如下 DECLARE Tbl
  • 如何获取 lambda 层内的批量大小

    我正在尝试实现一个层 通过 lambda 层 它执行以下 numpy 过程 def func x n return np concatenate x n np tile x n mean axis 0 x shape 0 1 axis 1
  • WPF Prism - 管理应用程序中的模块

    将 Prism 与 WPF 结合使用 我希望允许用户从存储库中选择他们想要使用的模块 每个模块本质上都是一个附加组件 选择要使用的模块只需将其移动到 DLL 的 模块 文件夹中即可加载 但是 在应用程序运行时尝试移动 DLL 时 会引发错误