如何在运行时将库重新加载到不同的版本? C#

时间:2017-03-23 18:32:04

标签: c# dll .net-assembly reload

我正在使用C#,Visual Studio编写的SAP Business One插件,但问题不应局限于此。

所以我要添加一个dll库" Sap.Data.Hana v3.5"通常在解决方案资源管理器中添加引用。这个版本是1.0.112.0。 特定版本在此属性中设置为false。

然后在某些情况下我想使用相同的库,但在不同的版本(1.00.120.042.111)。 所以我试图通过这段代码加载它:

System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles"), @"sap\hdbclient\ado.net\v3.5\Sap.Data.Hana.v3.5.dll"));

然后在代码中我使用来自此库的方法(Sap.Data.Hana.HanaConnection(conn.ToString()))。 我收到了这样的错误:

"Exception message: Version mismatch: C:\Program Files\sap\SAP Business One\AddOns\CT\ProcessForce\Sap.Data.Hana.v3.5.dll (1.0.112.0), C:\Program Files\sap\hdbclient\libSQLDBCHDB.dll (1.00.120.042.111).
Exception stack trace:    at Sap.Data.Hana.HanaUnmanagedDll.CheckDllVersion(FileVersionInfo verDll, String dllPath)"

正如我所假设的那样,但我不确定旧版本的库仍然存在于这样的程序集中,这就是问题所在。

但是加载这个库(原始版本)应该是延迟加载的!所以直到这个时候才应该加载它。

无论如何知道如何动态地将库重新加载到参考程序集中的标准库中的不同版本? 有人知道我应该去哪种黑客或方式吗?

此致

0 个答案:

没有答案