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

Posted

技术标签:

【中文标题】“程序集相同的简单名称已被导入”错误【英文标题】:"Assembly Same Simple Name already been imported" error 【发布时间】:2012-12-09 16:27:31 【问题描述】:

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

这是我得到的错误。 . .

具有相同简单名称“测验”的程序集, 版本=2.0.0.1,文化=中性, PublicKeyToken=null 已经被导入。

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

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

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

extern alias legacy;

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

【问题讨论】:

尝试从其中一个测验项目的项目属性中重命名程序集名称。 我不能这样做,它是灰色的。 【参考方案1】:

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

在解决方案资源管理器中,展开冲突项目,导航到 Dependencies->Assemblies 并检查是否存在对引发冲突的程序集的引用。如果存在,直接删除,冲突就解决了。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于“程序集相同的简单名称已被导入”错误的主要内容,如果未能解决你的问题,请参考以下文章

程序集使用版本 X,其版本高于引用的程序集错误

如何修复“引用的程序集没有强名称”错误

找不到包含 OwinStartupAttribute 错误的程序集

无法包含报表查看器 Web 部件。错误是,程序集的版本高于引用的程序集

.Net 选择错误引用的程序集版本

ASP.NET运行时错误:未能加载文件或程序集或它的某一依赖项.参数错误.