“已组装相同的简单名称已导入”错误

这是一个CLR项目。 我正在导入两个具有相同名称的DLL文件quizz.dll (我将旧版本重命名为legacyquizz.dll ),并将较新版本作为quizz.dll到旧版转换器测试项目中。 (正在测试的旧版转换器项目只导入旧的quizz.dll )。

这是我得到的错误。 。 。

已导入具有相同简单名称“Quizz,Version = 2.0.0.1,Culture = neutral,PublicKeyToken = null”的程序集。

尝试删除其中一个引用或签名以并排启用。 C:\ 。 。 。 \ Quizz.dll

它指向的路径是较新版本的quizz.dll的目标。

我在legacyquizz.dll文件上使用外部别名:

 extern alias legacy; 

在这种情况下,什么是“简单名称”?

您可以通过打开项目属性并选择assembly信息来查看简单名称:

在此处输入图像描述

要对程序集进行签名,您需要选择“签名”选项卡并创建或选择签名密钥:

在此处输入图像描述

您有两个具有相同名称的程序集(不是文件名,程序集名称)。 有两种解决方案:

  1. 从项目的属性重命名其中一个程序集并重新编译。
  2. 在assembly上设置强名称签名 ,以允许同一assembly的两个单独版本共存。

我的项目中似乎也出现了这个问题。 我已将我的dll路径更改为另一个文件夹,并为相同的(依赖层)更改了引用路径。 它会工作。 没有重复发生。