使用相同的 dll 库,但不同的版本都具有相同的 PublicKeyToken

问题描述

我想使用同一个库,但使用同一个程序的不同版本。 我遵循了这个问题中的解释,但就我而言,PublicKeyToken 是相同的:

Is it possible to reference different version of the same assembly into a single project?

我正在使用库 Siemens.Ingenieering.dll。我想使用版本 15 和版本 16。 我已经为两个库创建了 extern 别名:

extern alias Siemens_Engineering_15;

extern alias Siemens_Engineering_16;

我用别名引用每个对象,例如:

public Siemens_Engineering_15::Siemens.Engineering.TiaPortal MyTiaPortal15
        {
            get; set;
        }
        public Siemens_Engineering_15::Siemens.Engineering.Project MyProject15
        {
            get; set;
        }

代码一开始没有显示任何错误。但是当我执行它时,它只适用于第一个库 (V15) 中的对象,而不适用于另一个 (V16)。 显示以下错误

System.TypeLoadException:“无法加载程序集“Siemens.Engineering.Contract,Version=1500.0.2601.1,Culture=neutral,PublicKeyToken=37a18b206f7724a6”中的“Siemens.Engineering.Loader.IAppSupport”类型。”

这是我的 App.config

<?xml version="1.0"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
    </startup>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Siemens.Engineering" culture ="neutral" publicKeyToken="d29ec89bac048f84" />
                <codeBase version="15.0.0.0" href="Lib/Siemens.Engineering.15.dll"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Siemens.Engineering" culture ="neutral" publicKeyToken="d29ec89bac048f84" />
                <codeBase version="16.0.0.0" href="Lib/Siemens.Engineering.16.dll"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

此警告还显示

Severity Code Description Project File Line Suppression state Warning “Siemens.Engineering,Version=16.0.0.0,Culture=neutral,PublicKeyToken=d29ec89bac048f84”和“Siemens.Engineering,Version=15.0.0.0,PublicKeyToken=d29ec89bac048f84" 无法解析。随机选择“Siemens.Engineering,PublicKeyToken=d29ec89bac048f84”。

我已经尝试创建一个新类来使用每个库。

我认为程序失败是因为同样的原因,所以它只读取其中之一。但是不知道怎么解决

我最近开始使用 c# 语言,所以我真的很感激任何帮助 :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...