C# Assembly

💡 原文中文,约6000字,阅读约需15分钟。
📝

内容提要

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,以确保应用程序的稳定性和安全性。
  • 反射的缺点包括类型安全性不确定、速度慢和性能影响,建议避免使用反射来访问字段或调用方法/属性。
➡️

继续阅读