问题标签 [assembly.load]

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 回答
53 浏览

.net - 允许执行外部接口实现:有什么风险?

从编写 ABAP 程序开始,我将以下方法称为程序的“退出”,因此我相应地选择了名称。

假设您在 .Net 中,

1)定义一个接口

2) 为您的应用程序的用户提供某种方式将用户编写的程序集ExitImplementation.dll的名称和类的名称(例如myClass : exit,实现接口出口)传递给您的应用程序。例如作为命令行参数或以某种形式。

您将用户程序集string assemblyName的名称和类的名称(包括命名空间)存储在其中string theImplementation,然后加载并执行它:

3)

(第一个问题,次要的:这种技术在 ABAP 世界之外有名称吗?它叫什么?:-))

我想知道的是,通过让您的应用程序执行此用户代码,您会承担哪些风险(如果这是一个幼稚的问题,请原谅我,我还是 .Net 的新手)。假设输出只是确定某些消息输出到某个日志所需的一些消息代码。

假设作为部署场景,某家公司使用该应用程序开展业务,该公司的某位员工编写退出实现。如果该员工想要造成损害,将会面临哪些风险:

  1. 日志中只有一条错误消息?
  2. 应用程序的类实例的内容?
  3. 运行应用程序的 PC 的资源?
  4. 更差?

我的印象是答案是 4。不是吗?myClass 获得了执行的机会,因此基本上可以执行任何应用程序可以执行的操作,这些应用程序由运行原始应用程序的用户启动。有没有办法防止这种情况?

如果是这样:出口的签名是固定的并且方法的输入不能在方法中更改是否有任何区别(如果是,是哪个)?这种有意的方法不允许动态定义类型。

这种方法,也是有意的,只允许不能改变的输入。假设字符串参数被调用者可以修改的其他类型替换,比如 StringBuilder。这会增加风险吗?

是否有更复杂(标准)的技术来降低这种方法的风险?有替代方法吗?

0 投票
1 回答
615 浏览

.net - 在 MEF 环境中满足程序集依赖项

我有一个应用程序,我在其中使用 MEF 来动态加载扩展程序集。一个组件是域层,第二个是视图。域程序集加载并按预期工作。伪结构如下所示:

  • 解决方案
    • 领域项目
    • 查看项目

我遇到的问题是视图程序集包含 1..N 个用户控件,它们是第一个程序集中域对象的可视代理。这对视图组件施加了约束,因为它依赖于域层组件。例如,从上面看,View Project 程序集依赖于 Domain Project 程序集。我怀疑将视觉代理从视图项目移动到域项目中可以解决问题,但是,它会违背关注点分离。

在视图程序集上调用 Assembly.LoadFile() 方法时,我收到典型的 FileNotFoundException。我相信这是因为首先加载的域层程序集位于应用程序运行的根目录之外,因此不在探测路径内。在这个过程中我希望的是,因为核心程序集已经被加载,所以视图程序集对它的依赖将会得到满足。不幸的是,情况并非如此。

AppDomainSetup.PrivateBinPath 不适合我。这将限制扩展开发人员将其安装在已安装应用程序的文件结构中,这将导致污染,这不是我们需要或不希望的。我知道这个任务Extensions在安装的应用程序根目录下有一个目录会简单得多。

我想要做的是能够加载程序集并让其他已经加载并添加到 AggregateCatalog 的程序集满足它们的依赖关系。

有没有人有任何想法、建议或建议可以帮助我实现目标?

0 投票
1 回答
2117 浏览

c# - 检查 Mono.Cecil 和 Mono.Cecil.Cil

我有一些代码可以加载 exe 文件并向用户显示其 CIL 代码。为此,我使用 Mono.Cecil 和 Mono.Cecil.Cil。

现在我想做一些不同的事情:我想知道用户的系统中是否有 Mono.Cecil 和 Mono.Cecil.Cil。为此,我想将 Reflection.Assembly.Load 与 Mono.Cecil 和 Mono.Cecil.Cil 一起使用。就像是:

但我只收到以下错误:

当然,我有 Mono.Cecil 和 Mono.Cecil.Cil。我没有正确使用 Assembly.Load 吗?如果是这种情况,有人可以告诉我如何使用 Assembly.Load 来加载 Mono.Cecil 和 Mono.Cecil.Cil 而无需寻找路径(制作仅在 Windows 或 GNU/Linux 下使用的 exe 文件单声道)?

注意:我在 Linux Mint 下使用 MonoDevelop 2.6 或在 windows 7 下使用 MonoDevelop 2.8。

0 投票
2 回答
3155 浏览

c# - 在 AppDomain 中加载程序集并调用入口点

我在这方面度过了最艰难的时期。我已经用谷歌搜索了几个小时,并且在这里遇到了许多不同的问题,但我就是无法理解。

资源“mfX3DAu”是一个使用 Confuser 混淆的 .Net 程序集。

它加载得很好,它在新的 AppDomain 中,但是每次我尝试调用它时,我都会得到

发生“System.ExecutionEngineException”类型的未处理异常

我之前与之交谈过的人说他们可以使用这个特定的程序集,所以它一定是可能的。

0 投票
2 回答
278 浏览

c# - 同一个类中的多个方法中的 Assembly.Load() 来加载同一个程序集 - 最佳与否?

我有一个包含多个方法(例如 Method1、Method2、Method3)的类,并且在每个方法中我加载一个程序集(每个方法中相同的一个)并调用某个方法(反射),如下所示:

如果所有这些方法都加载相同的程序集,那么以这种方式进行反射在性能方面是否可行?然后代码如下所示:

或者最好在单独的方法中仅加载一次程序集(可能还有 GetType),存储对类程序集属性的引用,并且内部方法(方法 1、方法 2、方法 3 ..)使用此引用而不是始终调用程序集。加载()?这样,代码将类似于:

它有什么不同吗?域等在代码中永远不会改变(甚至使用)。

0 投票
1 回答
1706 浏览

c# - 尝试加载使用 C# 代码提供程序编译的程序集时出现奇怪的 Assembly.Load 错误

我正在尝试使用 C# 代码提供程序从我的代码编译程序集。

当我使用 compilerResult.CompiledAssembly 访问已编译的程序集时,一切正常。但是,当我改为执行 Assembly.Load(path) 时,会出现以下异常:

System.IO.FileLoadException:无法加载文件或程序集“C:\Users\Name\Desktop\output.dll”或其依赖项之一。给定的程序集名称或代码库无效。(来自 HRESULT 的异常:0x80131047)

我究竟做错了什么?

这是代码:

0 投票
3 回答
1407 浏览

c# - 如果我加载 winform 应用程序,Assembly.Load 会引发错误的格式异常

这是我得到的错误代码

当我尝试加载一个简单的 Windows 窗体应用程序(.net c#)

我使用的代码是这个

到目前为止,我只设法使它适用于我删除表单并从 Program.cs 中的 [STAThread] 运行代码的表单应用程序,它甚至不适用于简单的控制台应用程序。

对此有任何见解吗?

0 投票
2 回答
207 浏览

c# - 可测试性与过度设计?

这是一位与我感兴趣的同事实际提出的情况:

所以,为了模拟这个,你有两个选择

创建一个internal virtual方法:

或者,添加一个可以传入的新类

这两个选项似乎都是一个问题,因为第一个似乎它应该是一个私有方法,而第二个似乎是为简单的静态调用创建包装器的过度设计?

所以,我想我会把它带到社区。我正在寻找最实用的方法,同时保持单元可测试。

这类似于这个 SO question,但是我真的想更深入地研究它。

0 投票
2 回答
121 浏览

php - jquery 无法处理我在 div(.load) 中加载的 url

假设在一个文档中我有一个 div 和一个显示 div 的按钮:

和一个命令它显示的jquery:

该页面包含 jquery 函数、php、iframe 等。

问题是当它加载到 div 上时,该页面上的 jquery 不起作用。

提前致谢 :)

我试图在 div 中加载的页面包含(例如):

此脚本无法加载或工作。

0 投票
1 回答
1765 浏览

.net-assembly - 无法在 appDomain 中加载程序集

直到最近我通过调用 Assembly.LoadFrom 来加载我的程序集,这没关系。但是现在我需要将它加载到一个临时的 appDomain 中,但是在尝试将程序集加载到临时域中时,我一直遇到 FileLoadException。我试图将 appDomainSetup 参数传递给 CreateDomain 方法,但没有成功。

这是我的代码。

我的程序集位于我的应用程序基目录的子目录中