问题标签 [dynamic-assemblies]
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.
.net - 动态加载程序集时可以指定依赖目录吗?
我想知道这样的设置是否可行:
c:\eflow\proxy.dll(应用程序加载的主DLL) c:\eflow\application\dynamic.dll(proxy.dll动态加载的DLL) c:\eflow\dependency.dll(dynamic.dll所需的依赖DLL )
基本上,我想动态加载一个 DLL(以实例化类等),但将该 DLL 的依赖项存储在不同的位置。
这可能吗?我不想在每个子目录中都有这些依赖 DLL 的副本......(我无法将它们加载到 GAC 中,因为它们没有签名并且它们是第 3 方 DLL)
ioc-container - TFS 2010 - WebDeployment - 缺少间接引用的程序集
我们遇到了以下问题:
解决方案结构: AutofacRegistration 参考:Repositories.dll
Web 应用程序参考:AutofacRegistration.dll
在我们的 Web 应用程序中,我们引用了 AutofacRegistration.dll,而这个程序集引用了 Repositories.dll。Repositories.dll 在每个 IOC 容器的运行时实例化。
当我们在 VS2010 中构建解决方案并浏览 Web 应用程序时,一切正常,正如预期的那样。
当我们使用我们的构建服务器(TFS 2010)并使用 Web 部署时,Repositories.dll 缺少 web-app\bin 文件夹并且我们遇到了运行时异常(当我们想要在 Repositories.dll 中实例化一个类时)
但是 Repositories.dll 在我们的放置位置,所以 web 部署目标不会复制这个文件,有什么想法可以解决这个问题吗?
c# - 2路跨进程通信
我正在开发一个项目,我想要一个像 System 这样的插件沙箱,但是我在解决 2-Way 实时跨进程通信时遇到问题。起初我想到了 WCF,因为它可以传递对象元数据,但很快意识到 WCF 的服务客户端模型会带来问题。但在我在这里提出所有想法和问题之前,我已经计划好了。
我想有一个宿主应用程序来完成大部分工作,让我们调用这个host.exe,host.exe将宿主程序的主要应用程序逻辑,以及插件的启动、执行和杀死。插件将通过插件代理托管,该代理将通过 MEF 托管它们,因此我们将其称为 proxy.exe。proxy.exe 将加载插件 dll 并将它们托管在一个隐蔽的环境中,该环境将隔离故障,如果插件失败,它将终止代理而不是应用程序。主机和代理需要在两个方向上进行实时通信,并且因为会有多个代理主机,所以最好能够传递对象数据。
所以这就是我想要的基本想法。我在想几种方法来做到这一点。第一个是 WCF,但是我认为 WCF 的工作方式即使不是不可能,服务的服务器也很难向客户端发送请求/命令。下一个想法是什么使用 TCP,并让主机成为 TCP 服务器并开发一个我可以用来通信的消息传递协议,但这会带来一个问题,因为我没有 WCF 元数据的奢侈和传递复杂的类信息会快疯了。
通过我所有的研究,我提出了一个又一个问题,如果有人能够提出解决这个问题的方法,我将不胜感激。谢谢你。
c# - 动态程序集和方法
我已经编写 .NET 和 C# 多年了,但直到最近才遇到这种DynamicMethod
类型以及反射上下文中的动态程序集的概念。它们似乎总是在 IL(运行时代码)生成中使用。
不幸的是,MSDN 在定义动态程序集/方法实际是什么以及它们应该用于什么方面做得非常糟糕。有人可以在这里启发我吗?与DLR有什么关系吗?它们与运行时静态(正常)生成程序集和方法有何不同?我应该知道如何以及何时使用它们?
c# - 加载插件 DLL 文件,“动态程序集中不支持调用的成员。”
我们有自定义 DLL,它们不包含在我们的初始设置文件中。它们在运行时加载。此过程在使用 .NET 2.0 时运行良好,但由于我们正在使用 .NET 4.0,我们收到“动态程序集中不支持调用的成员”错误消息。
c# - 将程序集/模块加载到动态程序集中
我有一个已经创建的程序集,比如说Static.dll
,还有一个我在运行时创建的动态程序集,比如说Dynamic
。 Dynamic
创建一些 IL 代码以从Static.dll
. 创建时Dynamic
(成功保存),可执行文件在运行时出错,因为它无法加载程序集Static.dll
类型。我相信这种情况正在发生,因为Dynamic
exe 输出找不到这个 dll(或者至少这是我的猜测)。
如何完成添加此Static.dll
引用,以便当有人运行生成的可执行输出时Dynamic
,它可以找到引用的类型?
我知道Assembly.Load()
,但仅此一项并不能改变任何事情。或者至少,我不确定这给了我什么,因为我不需要在运行时使用该类型,而是在运行Dynamic
可执行文件时使用。
最后,我控制Static.dll
,所以如果我可以对项目做些什么来修复它,它可以完成,但是,它确实需要保持独立(我不想每次创建时都发出这个库动态装配)。基本上,我想我想让我的动态程序集.assembly extern mscorlib
在它的清单中保存Static
mscorlib 的位置。
谢谢
.net - .NET:在加载时扩展类还是有类加载器的概念?
这个问题可能被问了数百次,但又问了一遍:.NET 中是否存在类加载器的概念。让我详细说明一下这个问题:我不想在一个类中注入几个额外的代码项,以便能够将这个类的对象插入要开发的框架中。
在 Java 中,我使用读取字节码的类加载器来执行此操作,应用必要的修改并将类作为类型实例提供给应用程序。现在,可以通过反射的方式创建对象。
通过反射的方式,这在 .NET 中也肯定是可能的。因此,使用 Type::GetType() 调用当前 AppDomain 实例的 TypeResolver。在解析器中,加载原始类型,然后将其用作在动态程序集中创建的派生类型的基类。这有点棘手,因为派生类型不在同一个程序集中,因此内部类并不容易处理。但它是可行且稳定的。
现在,称我为迂腐的德国人,我加载了原始类型和派生类型,而在 Java 中我只有修改后的类型。我是否也可以在 .NET 中完成这项工作?
asp.net - 更改编译配置时的 .NET 组件行为差异
我遇到了一段代码的问题,该代码的行为不同,具体取决于它是在 Visual Studio 的 Release 还是 Debug 配置中编译的。我已经手动更改了在 Release 配置中可以看到的所有项目编译设置,使其与 Debug 匹配,但问题仍然存在。
代码(如下)返回执行程序集的 Guid:
该方法因“索引超出数组范围”而失败。在 Release 模式下编译后执行时出现异常。它在调试模式下正常工作。这是因为在此配置中,由 GetExecutingAssembly() 创建的程序集引用是临时程序集(例如,App_Web_eelfd0ff,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null),而不是底层的“真实”程序集。
奇怪的是,我有另一个组件在同一个 Web 中运行,它使用相同的代码并且行为相同,无论编译模式如何。
为什么会发生这种情况以及如何预防?
c# - 源代码的遗传进化
我很好奇用 C# 编写“自己编写”的代码。我知道这在广义上是不可能的,但我正在考虑为动态程序集设置某种格式,以定义除某些目标函数的主体之外的所有内容。然后一个算法或神经网络尝试填充函数体。在此之后,程序集被执行,新启动的程序集然后尝试调用目标函数,然后基于相同的代码创建另一个新程序集,希望更好地实现该目标函数。
鉴于这种行为,C# 和动态程序集将是一个合适的选择(我担心创建和执行程序集所花费的时间)。是否有某种语言专门用于动态创建要执行的代码,或者 C# 是一个足够好的选择吗?
此外,欢迎对创建程序集想法的整个程序集的方法或设置发表任何评论,并表示赞赏!(如果你看不出来,我很新)
谢谢!
delegates - How to Save an Expression Tree as the Main Entry Point to a New Executable Disk File?
I'm trying to export an expression tree to a PE assembly as the main entry point. I've acquired a Lambda Expression through building an expression tree, for example:
Steps 3 and 5 are what I'm missing.