从另一个 C# DotNet DLL 动态加载和调用 C# DotNet DLL
Posted
技术标签:
【中文标题】从另一个 C# DotNet DLL 动态加载和调用 C# DotNet DLL【英文标题】:Dynamic load and call of C# DotNet DLL from another C# DotNet DLL 【发布时间】:2018-12-14 00:35:13 【问题描述】:我什至不知道我想做的事是否可能。我有两个 C# DotNet DLL:Parent.DLL 和 Child.DLL。两者都是使用 .NET Framework 4 使用 Visual Studio 2010 构建的。
Parent.DLL 使用 Child.DLL 中的例程。但是,在运行时,Parent.DLL 和 Child.DLL 将位于不同的目录中。
有没有办法让 Parent.DLL 在运行时动态加载和使用 Child.DLL?
我遇到this example 用于动态加载 DotNet DLL 的控制台应用程序,我正在尝试调整它以供 DotNet DLL 使用。但是,它需要的引用在添加到项目时无法识别:
using System.Runtime.Loader;
我正在尝试做的事情是否可能?我需要更高版本的 DotNet 吗?
【问题讨论】:
当然是。看看Assembly.Load()
方法
CLR 已经非常擅长动态加载 DLL 而无需任何帮助。很难找到这样的 DLL 是一个非常糟糕的主意,您永远不会有意创建 DLL Hell。但是您可以使用 AppDomain.AssemblyResolve 事件。如果您打算创建一个插件架构(允许您不认识的人创建 DLL),那么情况就不同了,请务必在谷歌上搜索这些词以找到好的解决方案,前缀为“c#”。
【参考方案1】:
您正在寻找的短语是反射。 .NET 框架中的反射允许将 DLL 动态加载到调用程序集中,假设它们是在 .NET 框架中编写的并且您尝试调用的方法是公共的。 MSDN 上有很好的文档,正如前面提到的 here。
【讨论】:
以上是关于从另一个 C# DotNet DLL 动态加载和调用 C# DotNet DLL的主要内容,如果未能解决你的问题,请参考以下文章