除了将 excel.exe.config 文件添加到 Office Binary 文件夹之外,如何指定 Excel 在运行 .NET dll 时使用 .NET Framework 版本 2.0?
我们的应用程序在 Excel 中运行,并使用 VBA 来调用 .NET 程序集中的托管代码。我相信执行此操作的教科书方法是将 excel.exe.config 添加到 Office 二进制目录,其中包含:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
这个选项对于我们的客户来说是不可接受的,首先因为他们根本不允许我们将文件添加到 Office 目录,即使他们这样做,我们也不能冒险破坏某些使用 .NET v1.1 的应用程序,这是 Excel 的默认选择。
我们认为可行的解决方案是将 Excel.exe 文件从客户端的 Office 目录复制到我们自己的应用程序目录,在那里添加配置文件并执行该文件。它运行良好,但我们遇到了严重的安装问题,安装脚本无法找到正确的 Excel 版本。另外,这首先是一个令人讨厌的拼凑。
任何想法都会受到欢迎。我想知道 DLL 中的非托管(非 .NET)代码层是否可以工作。关于如何执行此操作或一些更简单的替代方案的一些建议将不胜感激,因为这并不简单。
Related:
.NET app.config 问题
配置为 Excel 选择的运行时版本的另一种方法是更改以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\AppPatch\v2.0.50727.00000\excel.exe
默认情况下,此键强制 Excel 使用 1.1 框架;删除它(或重命名)会导致 Excel 加载可用的最新版本。
如果您担心破坏 Excel 中的 .NET 1.1,那么您最终可能必须运行 excel.exe 的第二个重命名副本。 .NET 框架只能加载到给定的 Windows 进程中一次,因此在 excel.exe 的单个实例中,您必须在 1.1、2.0 或更高版本之间进行选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)