Gae*_*eur 12 c# compiler-construction portable-class-library
.NET Compact Framework引入了可重定向的程序集引用,现在用于支持可移植类库.
基本上,编译器会发出以下MSIL:
.assembly extern retargetable mscorlib
{
.publickeytoken = (7C EC 85 D7 BE A7 79 8E )
.ver 2:0:5:0
}
Run Code Online (Sandbox Code Playgroud)
C#编译器如何理解它必须发出一个可重定向的引用,以及如何强制C#编译器甚至在可移植类库之外发出这样的引用?
对于程序集本身来说,它是一个程序集标志,即[程序集:AssemblyFlags(AssemblyNameFlags.Retargetable)]。
请注意,此标志在平台程序集之外没有意义 - 自定义程序集无法重定向。
对于引用,它作为名称的一部分从被引用的程序集中复制。