问题标签 [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 回答
706 浏览

c# - 带有 .net 框架的 Microsoft 插件

我正在.net 框架中使用MAF扩展应用程序。我已经实现了一个管道和所需的文件夹结构,当我在一个 dll 中实现了加载项时它工作正常。

如果我有一个复杂的加载项,其中一个 dll 实现合同,一个支持 dll 执行内部逻辑。

当我构建这个加载项项目时,主 dll 和支持的 dll 被复制到加载项文件夹,当时框架无法从该文件夹中找到令牌。

0 投票
1 回答
219 浏览

appdomain - System.AddIn AddInView 程序集强名称问题

我已经建立了一个使用 System.AddIn API 的应用程序。加载项当前在具有 Internet 信任的外部 AppDomain 中激活。

为了提高性能,我为所有管道组件添加了强名称。但是,一旦我这样做了,在尝试激活我的加载项时就会出现以下异常:

System.Security.SecurityException:该程序集不允许部分受信任的调用者。

查看融合日志,错误消息表明这是由于 AddInView 程序集不允许部分受信任的调用者。但是,我已将 [assembly: AllowPartiallyTrustedCallers] 属性添加到程序集。AddInView 引用的唯一程序集是:

  1. 系统。
  2. 系统插件
  3. System.AddIn.Contract

任何想法如何解决这个问题?

0 投票
1 回答
979 浏览

.net - 可以抑制“AddInProcess.exe 已停止工作”吗?

我试图通过在其自己的进程中启动的 MAF 插件中执行潜在的恶意代码来沙箱化:

这似乎运作良好,只是在处理 StackOverflowException 时会显示一个对话框:“AddInProcess.exe 已停止工作”。这使得测试变得非常困难

如果我在 Sleep 到期之前单击“关闭”按钮,则测试成功,否则失败。这表示在按下“关闭”按钮之前进程不会退出。鉴于我希望进程终止,我如何确保它在不引发此对话框的情况下终止?我尝试将我的操作系统设置为“从不检查解决方案”,但对话框仍然出现。将其设置为“自动检查解决方案”可以避免对话框,但最多需要十秒钟,这是不可取的......我宁愿避免使用操作系统设置。

AddInProcess.exe 已停止工作

0 投票
2 回答
719 浏览

asp.net - How to Plugin Web Pages dynamically in ASP .NET (and update the plugin)?

For regular assemblies one can use MEF to load assemblies dynamically. If a live update is required of those assemblies, the recommendation is to use AppDomains to host the dynamic assemblies (potentially one can use Managed Add-in Framework (MAF)). When requiring an update, the appdomain is stopped, the assemblies are updated and the appdomain is reloaded.

What about assemblies that are loaded by ASP .NET that contain that code behind classes? How can I update them without forcing a restart of the main appdomain. Is it possible to host some of my pages in a dynamic appdomain? How would you do that? Can this appdomain share login token and authentication stuff so the user doesn't have to re-login?

Thanks

0 投票
1 回答
846 浏览

c# - 如何指定 AddIn 进程名称?

我正在使用 Microsoft AddIn Framework 来加载 AddIn 程序集。我在他们自己的进程中运行它们,以便将它们与服务分开。我不喜欢每个 AddIn 进程在任务管理器中显示为 AddInProcess32.exe 的事情。使用进程隔离时,我们如何重命名任务管理器中显示的名称,以便对用户更具描述性?

0 投票
1 回答
263 浏览

c# - MAF 插件的 EntryAssembly

有没有办法设置 MAF 插件,以便System.Reflection.Assembly.GetEntryAssembly()从插件的 AppDomain 内部调用时返回对插件主程序集的引用?

背景:为了满足我的项目的某些安全要求,我必须在单独的 AppDomain 中加载插件,并且从插件的 AppDomain 内部调用时,GetEntryAssembly() 的结果必须设置为插件的(强命名)主程序集。我按照MSDN MAF walkthrough中列出的模式开发了一个测试用例。在我的测试用例中,如果程序集加载到单独的 AppDomain(或进程)中,GetEntryAssembly() 始终返回 null。

我注意到 GetEntryAssembly 文档说“当从非托管应用程序加载托管程序集时,GetEntryAssembly 方法可以返回 Nothing”——这是否适用于 MAF 跨 AppDomain 边界的代理?

有问题的程序集和可执行文件都有强名称。

0 投票
1 回答
279 浏览

c# - C#中插件管道的实用性

在您的应用程序中使用 MEF 管道作为插件/插件环境的实用性如何?

例如,如果我想创建一个基本的报告基类,然后使用某种插件设置(如 MEF 管道)扩展功能,那么在此设置中使用它有多实用?

我没有很多应用程序使用这个模型(如果有人有一个使用这个模型的商业软件列表,我有兴趣去看看)

0 投票
1 回答
239 浏览

c# - 使用一个 C# 管道的多个加载项

是否可以有一个插件管道 (MEF) 但根据插件类类型执行不同的功能?

示例:如果我有用于报告的加载项(每个加载项执行专门的报告功能)和用于计算的加载项(每个加载项对应用程序的不同部分执行不同的计算),有没有办法将其设置在一个管道中?或者我是否必须为我希望加载项支持的每个功能设置一个单独的管道?

0 投票
1 回答
877 浏览

c# - C# 中的自定义管道文件和目录结构

我已经使用 C# 为插件构建了一个管道。构建项目后,如何更新代码以使用根目录中的 .dll 文件,而不是典型的加载项子目录中的文件?

示例 - 目前:

理想情况下(分别):

代码:

此时 AddInStore 对象已经构建,当我在这里断点时 AddInStore 对象已经设置了目录:

是否可以手动设置此对象以实现我理想的加载项目录和文件结构?

0 投票
2 回答
279 浏览

.net - 使用 System.Addin 和在内存中生成的程序集

我有一个应用程序,我必须为用户提供即时可扩展性。您可以将其视为一种计算引擎,具有大量数据和一些数学/数值算法。我提供了一些静态字段(数据)和方法(计算),用户可以使用它们构建一个应该返回双精度的有效 C# 表达式。

用户在文本框中键入有效表达式,我应该提供结果。我目前所做的是,按照http://blogs.msdn.com/b/abhinaba/archive/2006/02/09/528416中的步骤,在内存中生成的程序集的静态方法上注入表达式.aspx。然后我使用反射来调用特定的方法并返回结果。

这很好用,除了生成的程序集在应用程序的生命周期中不断累积。当我只有客户端应用程序时,这没问题,但现在我正在进入基于服务器的应用程序,我不想不时重置服务。

在搜索如何卸载程序集时,我发现了 System.Addin 命名空间。它完全符合我的要求:在不同的 AppDomain 上加载程序集,我可以在后面丢弃它。它甚至封装了所有反射。

我现在唯一的问题是 AddInStore 需要一个文件路径,但是我的所有程序集都是在内存中生成的,方法是将 CompileParameters 的 GenerateInMemory 属性设置为 true。绝对有必要将我的程序集写入磁盘吗?或者是否可以将在运行时编译的程序集直接用作加载项?

最好的问候,卡洛斯