问题标签 [maf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
176 浏览

add-in - MAF: Add-in crashes host even when run in seperate process

I am using MAF for my Addin development. All seems to be working fine, but one issue needs be sorted...

I activate the plugin in their own process, i,e, using

var process = new AddInProcess(); myAddinToken.Activate(process,AddInSecurityLevel.FullTrust);

When an unhandled exception occurs in the add-in, my host crashes! Since i am running the addin in a seperate process, why i am i still seeing my host app crash because of an unhandled exception in the ad-in?

Is it not supposed to simply crash the add-in specific dedicated process, and leave the host process as-is live?

Any ideas how to fix this?

0 投票
1 回答
241 浏览

c# - 使用 MAF C# 时是否可以从内存中删除插件

我正在开发一个管理员需要能够添加/删除/编辑插件的项目。插件由 3 个不同的 dll 和 2 个配置文件组成。当插件尚未加载时,我可以将其删除。但是,当用户当前正在使用或已经使用插件时,我无法再删除它而不会出现未经授权的访问异常。

我可以删除配置文件,但不能删除 dll。

是否可以在不重新启动 IIS 或站点的情况下完全删除插件?

先感谢您!

0 投票
1 回答
212 浏览

.net - 在 .NET 加载项和主机之间共享资源

我开发的应用程序使用带有 .NET 插件功能的插件,由System.AddIn. 我的主机应用程序以及加载项共享一些资源,例如 WPF 嵌入字体和 XAML 图标。我想避免将它们包含在 host 和 add-ins中。有没有什么方法可以在没有太多复杂性的情况下实现这一目标?

我的应用程序已经包含 7 个部分:主机、主机端视图、主机端适配器、合同、插件端适配器、插件端视图,最后是插件。我看到的问题是,当宿主加载加载项程序集时,加载项不可能访问位于宿主程序集中的资源。

插件提供主机使用的服务。我希望我的主机提供加载项消耗的资源。

一种可能的解决方案是引入另一个包含所有资源的程序集,主机和加载项都可以访问该程序集。该解决方案的积极/消极方面是什么?就像,当它不是合同时,加载项可以依赖这个程序集的存在吗?

0 投票
3 回答
1398 浏览

c# - C#、MAF、单独 AppDomain 中的未处理异常管理

好的,所以我有一个 MAF 应用程序,它在单独的 appdomain 中加载每个插件。这对我需要的东西非常有用,因为它允许我在运行时动态卸载和重新加载我的插件。

问题是,我需要能够在子 appdomain 中处理未处理的异常,捕获它,然后让该 appdomain 优雅地失败而不关闭父 appdomain

我该怎么做呢?这似乎是一项微不足道的任务,也是使用隔离应用程序域的主要好处之一......

0 投票
0 回答
98 浏览

c# - MAF AddIn process exits when running outside vshost

I have a MAF AddIn so i can show a Windows Forms application from WPF app. It all works perfectly when run from Visual Studio in vshost but when I run the app outside VS then most of the time the AddIn process exits:

Do you have any experience with MAF and can possibly explain what kind of difference running it under vshost can make?

0 投票
0 回答
116 浏览

.net - 设计一个多模块、跨团队的 Web 应用程序

背景

我们正在重新设计一个内部 Web 应用程序 (ASP.NET MVC3),目的是简化开发,尤其是部署。该应用程序是一个后台网络,几个团队开发模块。在过去的几年里,这是在同一个项目中完成的,然后在任何人需要发布时对“所有内容”进行完整发布。不出所料,这并没有那么好。我们现在的情况是,有六个团队想要按不同的时间表发布模块,这让情况变得难以忍受。

我们想要实现的目标:

  1. 每个团队开发自己的独立模块,然后将其加载到框架中。
  2. 这样的模块应该是可部署的,而无需重新部署基础应用程序或任何其他模块。
  3. 模块需要能够向其他模块提供部分视图

问题

我们已经完成了满足所有三个要求的概念验证。模块间通信使用 DI 容器处理。这工作得很好 - 有一个警告。当模块具有某些依赖项的不同版本时,我们会得到版本不匹配。如果我们想避免在每次有人更新某些依赖项时返回我们拥有的内容并迫使每个人重新部署,我们需要能够加载多个版本的依赖项。

据我了解,这将要求我们将模块加载到单独的 AppDomain 中。这似乎引发了许多问题。首先,一些讨论似乎说这在 IIS/ASP.NET 中的 ThreadStatic 变量等方面效果很差。其次,我们需要在域之间进行编组,这似乎很重要,并且会增加很多复杂。第三,模块间的通信看起来也变得很痛苦。

我已经简要地看了一下 MAF,它至少似乎为这种类型的架构提供了一些框架支持,但它看起来也非常复杂......是否有更好的选择,或者一些支持框架,或者设计?

0 投票
0 回答
145 浏览

c# - .net maf 插件在透明 wpf 窗口中

我在 wpf 透明窗口中显示 MAF 插件时遇到问题。

如果我设置 AllowsTransparency="False" 插件会显示并且一切正常。然而 AllowsTransparency="True" 使插件不可见,即使它的激活和初始化方式与在非透明窗口中的工作方式相同。

使窗口透明是必需的,请帮助找到解决方法。

注意:在同一个 AppDomain(作为主应用程序窗口)或单独的 AppDomain 中激活插件没有区别。但是,这个想法仍然是在受限权限集下将其加载到单独的 AppDomain 中,否则我不会使用 MAF。

0 投票
0 回答
138 浏览

c# - 从内存加载和沙箱插件

我正在开发一个 Windows Azure 网站,它根据用户输入修改一些数据并将数据返回给用户。所有数据修改都由每个用户插件处理,这些插件作为 blob 存储在数据库中。

目前,当用户请求一些数据时,我

  • 从数据库中获取该用户的所有插件;
  • 从内存中加载程序集
  • 使用反射查找所有实现共享程序集中定义的插件接口的类;
  • 实例化它们,将它们投射到接口中;和
  • 直接从他们那里调用一个方法,通过引用传递他们需要修改的数据以及任何适当的用户输入。

这工作得相当好,并且允许我为每个用户编写新的插件,这些插件只对他们的数据进行操作。

但是,从长远来看,我希望允许每个用户根据接口编写自己的插件,并通过将它们上传到数据库来安装它们。因此,我需要一些方法来限制插件能做什么和不能做什么。

我已经玩弄了一个基于AppDomains的自定义解决方案,但我还没有找到一种方法让它按照我想要的方式工作。我还查看了Managed Extensibility FrameworkManaged Add-in Framework,但似乎没有一个完全符合要求,MEF 不适合沙盒,MAF 不支持从内存加载插件。

  • 对于我的问题,是否有或多或少的现成解决方案?
  • 如果没有,我应该如何处理自己的写作;我的主机应用程序、最终的“插件运行器/沙盒”、任何接口、合同、适配器等以及它们是用户提供的插件之间的良好依赖关系的整体结构是什么?
  • 我是否应该将插件程序集本地保存在一个临时位置以简化解决它们的工作并允许我使用任何可用的框架?
  • 你能指出我的阅读材料的方向,这将使任务看起来更易于管理(或者更少,如果我应该放弃沙盒用户提供的插件的整个想法)?
0 投票
1 回答
67 浏览

wpf - 托管插件框架插件中的 wpf 文本框错误模板

我创建了一个文本框样式来包含一个在 UserControl 类中使用的validation.errortemplate。如果 UserControl 以正常的非 MAF 方式加载,我可以看到验证规则启动并获得视觉反馈(粗红色边框、文本框右侧的圆形爆炸和错误消息工具提示)——一切都按我期望的方式工作。

但是...如果我将相同的 UserControl 作为 AddIn 加载,我会失去视觉效果。(我确实看到错误工具提示的行为正确,所以我知道我的验证规则正在触发;我只是没有看到边框和爆炸符号。

顺便说一句,我的 AddIn 是基于 MSDN 的“addin-which-provides-a-usercontrol”示例。

我知道 AddIn 的一些限制(例如,视频不会在 AddIn UserControl 中播放);这是另一个限制,还是我搞砸了?

提前致谢!

[更新——我从我的 UserControl.Resources 中删除了错误模板——正如我所怀疑的,在非 MAF 版本中,这会导致验证失败导致文本框周围出现“标准”红色细边框。但是,在 MAF 版本中没有出现这样的红色边框。因此,TextBox.Style 似乎已被排除为罪魁祸首。]

0 投票
1 回答
501 浏览

.net - 托管插件框架 (MAF) - 托管第三方插件

我将在我们的 WPF 项目中使用,因为我需要一个允许多个插件加载运行时的强大加载项架构。我仍处于 MAF-Addin 管道框架的学习阶段。

  • WPF 宿主应用程序将在运行时发现并加载其插件程序集。

  • 插件将由在他们自己的域中运行的未知第三方创建,因此必须对它们进行沙盒处理以防止它们使主应用程序崩溃。

我有一些非常基本的疑问:

  • 第三方可以使用任何语言/技术来编写插件并且可以在主机端与 MAF(System.Addins) 一起使用吗?还是必须支持.NET?

  • 第三方将为我们编写插件,我们将在我们的 WPF 应用程序中集成他们的插件。关于我们的插件 MAF (addIn) 框架,我们是否需要向他们传达某些要求?除了我们的应用程序主要 API 功能之外,他们是否需要遵循某些 MAF 准则?