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

本文关键字:程序集 应用程序 类库 解决方案 项目 输出 创建 何创建 一个 包含具 | 更新日期: 2024-09-25 22:05:28

我有一个由类库支持的GUI项目。两者属于同一个解决方案,具有相似的目的,所以我想给它们取相同的名字。这应该是可能的,因为GUI应用程序的文件名将是库的foo.exefoo.dll。但是,在实践中尝试这样做会导致CLR找不到其中一个程序集。

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

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

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

这是不可能的。CLR通过程序集的显示名称来定位程序集。EXE和DLL项目的显示名称都是"foo",它不包括文件扩展名。因此,当CLR需要找到程序集"foo"时,它将首先尝试"foo.EXE",然后尝试"foo.DLL"。显然,这在您的情况下不会很好地工作,当您的程序尝试使用类库中的类型时,它会爆炸。

必须使用其他名称。

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

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