如何创建包含具有相同输出程序集名称的应用程序和类库项目的C#解决方案?

时间:2013-12-12 20:27:24

标签: c# .net

我有一个由类库支持的GUI项目。两者都属于相同的解决方案并具有相似的目的,所以我想给它们相同的名称。这应该是可能的,因为GUI应用程序的文件名对于库来说是foo.exefoo.dll。但是,在实践中尝试此操作会导致CLR无法找到其中一个程序集。

首先,部分问题似乎是PDB文件名是从程序集名称而不是文件名生成的,例如, PDB的名称为foo.pdb,而不是foo.exe.pdb。因此,一个PDB会覆盖另一个PDB。但是,即使在不需要PDB的 Release 模式下,程序集仍然无法以相同的异常执行,因此问题可能与调试无关。

如何创建包含具有相同名称的应用程序(exe)和类库(dll)的解决方案?

2 个答案:

答案 0 :(得分:3)

这是不可能的。 CLR按 display 名称查找程序集。 EXE和DLL项目的显示名称是“foo”,它不包含文件扩展名。因此,当CLR需要找到程序集“foo”时,它将首先尝试“foo.EXE”和下一个“foo.DLL”。很明显,这在你的情况下效果不好,当你的程序试图使用类库中的类型时,你的程序会爆炸。

必须使用其他名称。

答案 1 :(得分:0)

如果您关心的是同名,那么这就是我的建议。如果你不介意,我将从头开始:

  1. 创建一个空白解决方案。
  2. 添加两个新的解决方案文件夹,“App”和“Library”。
  3. 打开Windows资源管理器,转到您的解决方案目录并创建两个名称相同的目录,“App”和“Library”
  4. 返回Visual Studio,在“App”下添加GUI项目。我们称之为“foo”。确保将其放在您在步骤3中创建的“App”目录下。
  5. 同样,为您的图书馆项目做同样的事情,把它放在“图书馆”下。称之为“foo”并确保它进入“Library”目录。
  6. 你现在应该可以编译它了。