不知为何,我突然来了兴趣:“类的头部是怎么回事System.Management.Automatization.PowerShell
(dll的路径- )?”。C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v*версия PS*\System.Management.Automatization.dll
他为什么不重要,重要的是他是什么。
我——就像一个真正的海盗——从JetBrains
( dotPeek
) 拿了反光板并打开了这个图书馆。事实证明,所有方法要么是空的,要么如果它们返回一个值,则包含一个注释:“ Stub method (only 'ret' instruction)
”,-据我了解,这些是某种存根方法。这绝对是关于所有课程的。
它是什么以及一般如何编译“第二类(带注释)”方法?什么是存根方法,为什么需要它们?是dll加密,反射器错误还是什么?
这是一个仅元数据程序集。里面没有真正的代码,只有足够的元数据来编译引用这个程序集的代码。
带有代码的实际程序集在 GAC 中(例如,在 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll 中) , 并在启动时拉起而不是参考组件。
这就是所谓的
reference assembly
。它们没有方法实现,只有公共类。它们是为相同的 dll 可以具有不同版本(对于 .NET 4.0、4.5、4.6 等)的情况而发明的。在构建阶段,您的项目引用reference assembly
,并且在运行时,已在系统中搜索了必要的 dll。更多详细信息:https ://github.com/dotnet/standard/blob/master/docs/history/evolution-of-design-time-assemblies.md#using-reference-assemblies
如果您想查看 .NET Framework 版本
System.Management.Automatization.PowerShell
,请在 GAC 中查找。