项目引用相同名称的程序集

时间:2015-09-01 08:29:48

标签: c#

我有项目SandBox和SandBoxLibrary(SandBoxLibrary曾经是SandBox,只是复制在磁盘上,重命名文件夹并打开)。我在SandBoxLibrary中添加了一些库函数,构建它,将dll复制到SandBox中。现在在SandBox中我引用了SandBoxLibrary DLL,从那里调用了public方法(intellisense工作正常),但是当我运行这个项目时,我收到以下错误:

Unhandled Exception: System.TypeLoadException: Could not load type 'XT.X' from assembly 'SandBoxBinary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

两个项目都具有相同的程序集名称。如果我换一个,它就可以了。现在问题是我希望编译器对此发出警告/错误,我不希望运行时未处理的异常......有人可以解释以下问题吗?有什么规则?

感谢。

1 个答案:

答案 0 :(得分:0)

如Hans Passant的评论中所述,问题是两个程序集共享相同的名称(即文件名),而库不在GAC中。突然编译代码时,输​​出目录中需要有两个同名的DLL文件(即big \ Debug) - 主程序集和库,两者名称相同。这就是造成这个问题的原因。

当你将所有碎片放在一起时非常明显。