我使用 3.6 版本的 LO SDK 库制作了一个在 LibreOffice Calc 中构建报告的应用程序。这些 dll 是 .NET 2.0,afaik,而我的应用程序是 .NET 3.5,因此可以很好地协同工作。
但是,当我在安装了 LO 4.0 的 PC 上运行应用程序时,它看起来好像不是从应用程序文件夹(正确的 dll 被复制的地方)加载 dll,而是从主机 PC 的某个地方加载 dll,因为它抛出异常“这个程序集是构建的由比当前加载的运行时更新且无法加载的运行时加载“加载 cli_uno.dll(当我尝试运行报告时)。看起来 LO 4 SDK dll 是为 .NET 4.0 组装的?
好吧,它不是为 .NET 4.0 重建应用程序的选项(因为它会在有任何新的 .NET 5.0 dll 时重复)。
有没有办法让应用程序只从自己的文件夹中加载 dll?
UDPATE cli_uno.dll 实际上根本不包含在我的应用程序中。它位于 LO 安装文件夹中,显然由我的应用程序中包含的那些“cli_*.dll”文件调用。但我无法控制将安装什么版本的 LO!它只是不受任何汇编版本设置的控制。当应用程序在 LO 3.6 上正常工作时,它只是不正确,但在升级到 LO 4.0 后停止工作。说真的,我已经在古代 Delphi 7 中使用古代库连接到 MS Excel(这是在 XP/2000 版本实际出现时创建的)制作应用程序,并且至少在 2007 版本中运行良好。
是不是应该使用接口,让不同版本的应用,甚至不同平台的应用,能够互通、交换数据?可能是我使用 LO SDK 完全错误吗?