我使用3.6版本的LO SDK库创建了一个在LibreOffice Calc中构建报表的应用程序。这些dll是.NET 2.0,afaik,我的应用程序是.NET 3.5,所以它可以很好地协同工作。
但是当我在安装了LO 4.0的PC上运行应用程序时,看起来它似乎不是从应用程序文件夹(正确的dll被复制)加载dll,而是从主机PC中的某个地方加载,因为它会抛出异常“这个程序集是由比当前加载的运行时更新的运行时构建的,无法加载“on load 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?
答案 0 :(得分:0)
你的当地大会签了吗?如果您可以删除文件夹中包含的dll上的签名,则它始终从该文件夹加载。只要签署,它就会首先考虑GAC。