“已导入程序集相同的简单名称”错误

时间:2012-12-22 08:15:11

标签: c# visual-studio dll namespaces clr

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

这是我得到的错误。 。

  

具有相同简单名称的组件'Quizz,   版本= 2.0.0.1,文化=中立,   PublicKeyToken = null已导入。

     

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

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

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

extern alias legacy;

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

4 个答案:

答案 0 :(得分:5)

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

enter image description here

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

enter image description here

答案 1 :(得分:3)

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

  1. 从项目的属性重命名其中一个程序集并重新编译。
  2. 在程序集上设置Strong-Name Signing以允许同一程序集的两个不同版本共存。

答案 2 :(得分:0)

如果使用的是新的.csproj版本,则在添加对另一个解决方案项目的引用后,如果该引用已经作为程序集依赖项存在,则可能会遇到此问题(Visual Studio可能已自动添加了此引用)

在解决方案资源管理器上,展开冲突的项目,导航到 Dependencies-> Assemblies 并检查是否存在对引发冲突的程序集的现有引用。如果存在,只需将其删除即可解决冲突。

答案 3 :(得分:-2)

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