我陷入了一个真正混乱的境地。
场景: 我有一个调用 .NET 4.0 库(通过 ExcelDna)的 Excel 自动化 VBA 加载项。这个 4.0 库调用了 2.0 混合模式库中的一些方法。因此必须将 'BindAsLegacyV2Runtime' 设置为 4.0 CLR。我在 4.0 库中设置了这个,当 excel 实例化这个库时,CLR 加载这个属性集并且一切正常。(见这个链接)。我无法修改 excel.exe.config,因为它在生产机器中被拒绝。
我从批处理文件启动 excel 进程并将我的插件加载为:
Start Excel.exe my4.0addin.xla
问题: 发现这在少数用户机器上不起作用,并调查了这个问题,发现 excel 在加载作为参数传入的插件之前首先在机器中加载预安装的插件。因此,在加载 4.0 加载项之前,excel 正在加载 2.0 CLR,因为有一些其他加载项。因此,该属性无法设置,逻辑进行了折腾。
我无法修改 excel.exe.config(将属性添加到配置)或注册我的插件,因为这两者都需要用户计算机上的管理员权限,并且在我的环境中是不可能的。
因此,有没有办法控制 excel 加载插件或任何方式来使这项工作?