COMDynamicWrite.SavePEFile在哪里实施?
Where is COMDynamicWrite.SavePEFile implemented?
我正在调试将动态程序集保存到磁盘的问题,我想看看将程序集 PE 文件保存到磁盘时会抛出哪些异常。保存代码最终调用到 AssemblyBuilder.Save
which eventually calls the internal method ModuleBuilder.SavePEFile
. This method is an internal QCall and the target method is declared in a class called COMDynamicWrite
。但是,整个存储库似乎没有此方法的实现。
COMDynamicWrite::SavePEFile
在哪里以及如何实施?
让我们来回答这个问题,任何查看 CoreCLR 项目的人都应该知道一个相关的细节。我 90% 确定 .NETCore 和完整版的 CLR 是从相同的代码库构建的。 #ifndef FEATURE_CORECLR
禁用了不应成为核心版本的内容。例如,你会发现 AppDomain 支持回来了,这是一个不在 .NETCore 中的功能,也不计划在那里。
他们在 2017 年 2 月 10 日迈出了一大步,永久脱离了 CoreCLR 代码库的根源。他们积极删除了在 FEATURE_CORECLR 无效时始终禁用的代码。可能是为了使移植工作更易于管理,我想他们为这段代码打了很多补丁。
那也删除了 COMDynamicWrite::SavePEFile()。一个典型的移植问题,因为 Unix 不使用 PE32 可执行文件格式。它仍然存在于 the previous version。
我通常建议使用第一个签入版本的 CoreCLR 进行此类探索。它的补丁数量最少,因此最有可能准确地表示桌面 CLR 行为。同样,请注意拆分后对 CLR 的更改。当然很难看到。虽然它主要处于维护模式,但我确实知道,例如,他们对 GC 进行了修补,使其能够更好地处理数 GB 的巨型堆大小。只是因为它在 4.6 中引起了一个讨厌的错误,在 4.6.1 中修复
我正在调试将动态程序集保存到磁盘的问题,我想看看将程序集 PE 文件保存到磁盘时会抛出哪些异常。保存代码最终调用到 AssemblyBuilder.Save
which eventually calls the internal method ModuleBuilder.SavePEFile
. This method is an internal QCall and the target method is declared in a class called COMDynamicWrite
。但是,整个存储库似乎没有此方法的实现。
COMDynamicWrite::SavePEFile
在哪里以及如何实施?
让我们来回答这个问题,任何查看 CoreCLR 项目的人都应该知道一个相关的细节。我 90% 确定 .NETCore 和完整版的 CLR 是从相同的代码库构建的。 #ifndef FEATURE_CORECLR
禁用了不应成为核心版本的内容。例如,你会发现 AppDomain 支持回来了,这是一个不在 .NETCore 中的功能,也不计划在那里。
他们在 2017 年 2 月 10 日迈出了一大步,永久脱离了 CoreCLR 代码库的根源。他们积极删除了在 FEATURE_CORECLR 无效时始终禁用的代码。可能是为了使移植工作更易于管理,我想他们为这段代码打了很多补丁。
那也删除了 COMDynamicWrite::SavePEFile()。一个典型的移植问题,因为 Unix 不使用 PE32 可执行文件格式。它仍然存在于 the previous version。
我通常建议使用第一个签入版本的 CoreCLR 进行此类探索。它的补丁数量最少,因此最有可能准确地表示桌面 CLR 行为。同样,请注意拆分后对 CLR 的更改。当然很难看到。虽然它主要处于维护模式,但我确实知道,例如,他们对 GC 进行了修补,使其能够更好地处理数 GB 的巨型堆大小。只是因为它在 4.6 中引起了一个讨厌的错误,在 4.6.1 中修复