.net - NET 4.0 在 COM+ 中安装程序集加载额外的依赖项

我们有一个程序集,我称之为 COMPlusAssembly,它引用了第三方 dll。 COMPlusAssembly 托管在 COM+ 中,并使用 System.Enterprises.RegistrationHelper 安装。我们的客户可能会也可能不会安装 COMPLusAssembly 中引用的第三方软件。在 .NET 3.5 中,当使用 RegistrationHelper 安装 COMPlusAssembly 时,它甚至从未尝试加载第三方 dll。现在我们已经升级到 .NET 4.0,它正在加载程序集并在注册期间抛出 FileLoadException 无法加载文件或程序集或其依赖项错误之一。 .NET 4.0 中是否发生了某些更改,导致它加载在 .NET 3.5 中未加载的其他依赖项。我们的第三方程序集是 .NET 2.0 程序集。有没有办法告诉框架不要加载依赖项?

谢谢!

-塔米

最佳答案

我还没有真正的确切答案(尽管它可能会演变),但我有一些建议。

据我所知,在 JITter 需要依赖项之前,不会加载依赖项(仍然是在 .Net 4.0 中)。也许不知何故,以前延迟的代码路径现在急切地进行了 JIT,因此尝试加载依赖项。

处理此问题的最佳方法可能是在 JITted 需要依赖项的代码路径之前使用 AppDomain.Load 手动接管依赖项的加载和解析。然后您可以确定加载是否成功,如果没有,则明确决定不执行现在不可用的代码。

此外,由于您使用的是 .Net 4.0,您还可以考虑使用一种不同的方式来满足依赖关系,即使用位于 System.ComponentModel.Composition 中的名为 MEF 的类型解析框架。使用 MEF,您可以轻松地加载和发现类型,然后自动将这些类型组合到您的依赖类型中。在这种情况下,运行发现后,您会发现依赖性不满足(可能属性值仍为 null),然后您可以采取适当的措施。

https://stackoverflow.com/questions/4629918/

相关文章:

.net - ToString() 和调试器的字符串可视化工具

c# - 在 JSON.NET 中使用 LINQ 从字典创建 JProperty

r - 如何使用 RODBC 或 RCurl 从 R 中受密码保护的 Sharepoint 2007

maven-3 - mvn clean install + java.lang.NoClassDef

c++ - 随机数生成的快速模数替换是什么?

java - 为什么当我在另一台计算机上加载我的工作区时 Eclipse 显示错误?

.net - .NET 资源文件字符串是否被保留?

eclipse - 卸载eclipse插件报错

asp.net - "Invalid use of response filter"压缩来自 IHt

wordpress - 将 Wordpress URL 路径转换为查询字符串