微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.NET 托管程序集如何解析其引用本机程序集/GAC

如何解决.NET 托管程序集如何解析其引用本机程序集/GAC

发现一个非常奇怪的情况,所以寻求解释:

System.Fabric.dll is managed assembly provided by Azure's Service Fabric.

Fabricclient.dll is native assembly on which System.Fabric.dll relies. 

managed refering native

SystemFabric 运行时在 8.0 版的 VM 上运行。它已将 System.Fabric.dll 注册到与 8.0 版本相同的 GAC 中。与此版本一起,还注册PublisherPolicy.7.0,它将 VM 上的所有 7.0 System.Fabric 查找从 GAC 重定向到 8.0 版本。

在使用 System.Fabric.dll 7.0 版本编译的 VM 上执行 test.exe(Fabricclient.dll 和 System.Fabric.dll 与此 test.exe 一起提供),并开始遇到互操作 COM InvalidCastException .

使用procmon调试*.dll冲突的原因,发现由于发布者政策,System.Fabric.dll与来自GAC的8.0版本一起使用,但Fabricclient.dll是从test.exe所在的本地目录使用的.

到目前为止,我知道 .NET 使用以下方法解析托管程序集:

clr resolve

但是 Windows 用于解析本机程序集的方法是什么?

此外,如果托管程序集因政策而从 GAC 重用,则其配对本机 dll 不会从 windows 子目录中重用。 (IIRC 我已经看到 Fabricclient.dll 8.0 在 Windows 目录中注册

好像Windows首先在test.exe所在的同一目录中查找本机dll?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。