C# Assembly
内容提要
Assembly是.NET框架的基本构建模块,用于封装代码和资源,并支持版本控制、安全性、类型信息、可再分发性和依赖管理。私有Assembly仅供单个应用程序使用,共享Assembly可以被多个应用程序使用。GAC是全局程序集缓存,用于存储共享Assembly。Assembly和AppDomain是不同的概念,Assembly是基本构建单元,用于模块化和重用,而AppDomain是应用程序的执行环境,提供隔离和管理。CLR不提供卸载单独程序集的能力,因为会导致应用程序崩溃,可以通过卸载整个AppDomain来释放相关的程序集和资源。反射的缺点包括类型安全性不确定、速度慢和性能影响,应避免使用反射来访问字段或调用方法/属性。
关键要点
-
Assembly是.NET框架的基本构建模块,封装代码和资源,支持版本控制、安全性、类型信息、可再分发性和依赖管理。
-
Assembly分为私有Assembly和共享Assembly,私有Assembly仅供单个应用程序使用,共享Assembly可以被多个应用程序使用。
-
GAC是全局程序集缓存,用于存储共享Assembly,支持版本控制和安全性。
-
Assembly在C#和.NET开发中的使用场景包括模块化开发、代码重用、插件架构、版本管理、分布式应用和跨语言互操作。
-
Assembly和AppDomain是不同的概念,Assembly是代码和资源的物理单位,而AppDomain是逻辑的执行环境。
-
Assembly.Load和AppDomain.Load用于加载程序集,但使用场景和行为不同,前者在当前AppDomain加载,后者可以指定AppDomain。
-
System.MarshalByRefObject允许对象通过引用在应用程序域之间进行通信,适用于远程方法调用。
-
CLR不提供卸载单独程序集的能力,卸载程序集必须卸载整个AppDomain,以确保应用程序的稳定性和安全性。
-
反射的缺点包括类型安全性不确定、速度慢和性能影响,建议避免使用反射来访问字段或调用方法/属性。