“.NET框架参考程序集门面”文件夹有什么用途?

13

我注意到在每个.NET Framework参考程序集文件夹中都有一个Facades文件夹。从v4.5开始,这些文件夹中的所有程序集非常小,仅包含元数据。

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7\Facades
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.1\Facades

我很好奇,想知道这些东西是用来做什么的?谢谢!


8
https://github.com/dotnet/standard/blob/master/docs/history/evolution-of-design-time-assemblies.md - Hans Passant
2
@HansPassant 这是我读过的关于.NET程序集的最好的文章!非常感谢你! - Student222
2个回答

1

对于 .NET Framework 而言,没有答案,但针对 .NET Core / .NET (5+) ,引用程序集包含在“包”中。这些包括:

  • 目标包
  • 运行时包
  • 应用宿主包

引用程序集位于目标包中(位于C:\Program Files\dotnet\packs

引用程序集仅在构建时被引用。在运行时,“应用宿主”根据架构和平台决定使用哪个实际程序集。

更多信息可以在此博客文章中找到。


1
类型转发(Type Forwarding)是一种概念,可以将类型声明从一个程序集(例如A)移动到另一个程序集(例如B),而无需重新编译使用第一个程序集(A)的应用程序。

外观程序集仅包含类型转发

外观程序集与合同程序集(类似于引用程序集)的标识匹配,并将所有类型(在合同程序集中声明)转发到它们各自的实现程序集。

因此,在设计时,您将应用程序编译为一组合同程序集,而在运行时,应用程序在外观程序集中查找类型(因为它们与合同程序集的标识匹配),并且在程序集中进行类型转发,类型声明是从实现程序集中获取的。

由于外观程序集仅包含类型转发,因此它们非常小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接