微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用相同的 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?