gpt4 book ai didi

.net - 如何配置 COM 版本以使用由 RegAsm.exe 注册的 .NET 程序集?

转载 作者:行者123 更新时间:2023-12-02 15:09:49 25 4
gpt4 key购买 nike

regasam.exe通过创建版本相关的注册表项来注册 .NET 程序集以供 COM 使用:

HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
|- InprocServer
|- 1.0.0.0
|- 1.0.0.1
|- ...

当注册多个版本时,哪个版本是默认版本?

由于注册的 dll 是 mscoree.dll 我假设设置由它读取和解释,因此问题可以改写为:

mscoree.dll 如何解释这些键以及如何选择要使用的默认版本?

有用信息

最佳答案

非常怀疑这是否能达到您希望的效果。这些是与版本相关的注册表项,由 this MSDN article 涵盖。 。请注意它所属的主题,它讨论了 [ComVisible] .NET 程序集的并行执行。它解决的是 CLR 版本控制问题,而不是 COM 服务器版本控制问题。

在 .NET v4 之前,由 Regasm.exe 编写的 RuntimeVersion 注册表项存在问题。当 CLR 版本还在快速变化时,这是一个大问题,也是 .NET 1.1 中首先需要解决的一个问题。由于只能加载一个 CLR 版本,因此 RuntimeVersion 注册表项值需要与 CLR 版本匹配。这很难保证,如果已经加载,COM 服务器无法控制加载的 CLR 版本。例如,通过另一个 COM 服务器。

依赖于版本的子项允许注册在另一个版本的 CLR 上工作的另一个版本的 COM 服务器。这意味着 RuntimeVersion 键将具有不同的值。 CLR 将枚举键并查找与其加载版本相匹配的键。

这仍然不是一个理想的解决方案,当第一个 COM 服务器请求较低的 CLR 版本时,失败很常见。这需要客户端应用程序的 .config 文件来强制使用更高版本。一种解决方法,但不是一个令人愉快的方法。 .NET 4.0 通过其进程内并行 CLR 支持提供了更可靠的解决方案。允许加载多个 CLR 并允许每个 COM 服务器以其所需的 CLR 版本运行。所以这些 key 不再需要了。并且不应使用。

关于.net - 如何配置 COM 版本以使用由 RegAsm.exe 注册的 .NET 程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22982550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com