C#如何将程序集加载到应用程序域中

C#如何将程序集加载到应用程序域中,第1张

可以通过多种方式将程序加载应用程序域中。推荐方式是使用System.Reflection.Assembly类的static(在 Visual Basic 中为Shared)Load方法。加载程序集的其他方式包括:Assembly类的LoadFrom方法加载已给定其文件位置的程序集。通过此方法加载程序集将使用不运粗同的加载上下文。ReflectionOnlyLoad和ReflectionOnlyLoadFrom将程序集加载到仅反射上下文中。注意仅反射上下文是 .NET Framework 2.0 版中的新增功能。诸如CreateInstance方法和AppDomain类的CreateInstanceAndUnwrap之类的方法可将程序集加载到应用程序域中。Type类的GetType方法可加载程序集。System.AppDomain类的Load方法可以加载程序集,但该方法主要用于 COM 互 *** 作性。不应使用该方法将程序集加载到除从其调用该方法的应用程序域手租以外的其他应用程序域。注意从 .NET Framework 2.0 版开始,对于版本号高于当前已加载运行库的 .NET Framework 版本,运行库将不加载由其进行编译的程序集。这同样毕悄兆适用于主版本号和次版本号的组合。可以指定在应用程序域间共享来自已加载程序集的实时 (JIT) 编译代码的方式。有关更多信息,请参见应用程序域和程序集。示例下面的代码将名为example.exe或example.dll的程序集加载到当前应用程序域中,从该程序集获取名为Example的类型,为该类型获取名为MethodA的无参数方法,然后执行该方法。有关从所加载程序集中获取信息的完整讨论,请参见动态加载和使用类型。

应用程序域:(Application Domain,简称App Domain)一组程序集的一个友塌山逻辑容器,进程中的一衫哗个逻辑分区。通常由运行时宿主创建和 *** 作。AppDomain唯一的作用就是进行隔离。

具体功能:

隔离,一个AppDomain中的代码创建的对象不能由另一个AppDomain中的代码直接访问。达到隔离应用程序的效果。当然如果要访问别的AppDomain中的内容,可以使用“按引用封送”或者“按值封送”的语义。

AppDomain可以卸载,但不能卸载单独的程序集或类型,只能卸载整个应用程序域。从而卸载包含在该AppDomain中的所有程序集。

AppDomain可以单独保护,AppDomain在创建后,会应用一个权限集,它决定了向这个AppDomain中运行的程序集授予好中的最大权限。从而保护宿主加载的代码不被破坏。

可以单独实施配置,AppDomain在创建后,会关联一组配置设置。这些设置主要影响CLR在AppDomain中加载程序集的方式。这些设置涉及搜索路径、版本重定向、卷影复制以及加载器优化。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12383807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存