同名的项目引用程序集

本文关键字:引用 程序集 项目 | 更新日期: 2023-09-27 18:10:35

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

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

两个项目具有相同的程序集名称。如果我换一个,它就能正常工作。现在的问题是,我希望编译器在这个问题上发出警告/错误,我不希望运行时未处理的异常…有人能解释一下下面的问题吗?规则是什么?

谢谢。

同名的项目引用程序集

正如Hans Passant在评论中指出的那样,问题是两个程序集共享相同的名称(即文件名)并且库不是GAC。当代码突然编译时,需要在输出目录中有两个具有相同名称的DLL文件(即大'Debug) -主程序集和库,两者命名相同。这就是导致问题的原因。

当你把所有的碎片放在一起时,很明显。