如何解决使用相同的 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 举报,一经查实,本站将立刻删除。