Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建包含具有相同输出程序集名称的应用程序和类库项目的C#解决方案?_C#_.net - Fatal编程技术网

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

如何创建包含具有相同输出程序集名称的应用程序和类库项目的C#解决方案?,c#,.net,C#,.net,我有一个由类库支持的GUI项目。两者属于同一个解决方案,具有相似的用途,因此我想给它们取一个相同的名字。这应该是可能的,因为GUI应用程序的文件名对于库是foo.exe和foo.dll。但是,在实践中尝试此操作会导致CLR无法找到其中一个程序集 首先,部分问题似乎是PDB文件名是从程序集名称而不是文件名生成的,例如,PDB的名称是foo.PDB,而不是foo.exe.PDB。因此,一个PDB覆盖另一个PDB。但是,即使在不需要PDB的发布模式下,程序集仍然无法执行,并且出现相同的异常,因此问题可

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

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


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

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


您必须使用其他名称。

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


您必须使用其他名称。

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


您必须使用其他名称。

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


您必须使用不同的名称。

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

  • 创建一个空白的解决方案
  • 添加两个新的解决方案文件夹“应用程序”和“库”
  • 打开Windows资源管理器,转到解决方案目录,创建两个同名的目录,“应用程序”和“库”
  • 返回Visual Studio,在“应用程序”下添加GUI项目。我们叫它“福”。确保将其放在步骤3中创建的“应用程序”目录下
  • 同样,对您的库项目执行相同的操作,将其放在“库”下。称它为“foo”,并确保它进入“Library”目录
  • 您现在应该可以编译它了

  • 如果你只在乎同名,那么这就是我的建议。如果你不介意的话,我将从零开始:

  • 创建一个空白的解决方案
  • 添加两个新的解决方案文件夹“应用程序”和“库”
  • 打开Windows资源管理器,转到解决方案目录,创建两个同名的目录,“应用程序”和“库”
  • 返回Visual Studio,在“应用程序”下添加GUI项目。我们叫它“福”。确保将其放在步骤3中创建的“应用程序”目录下
  • 同样,对您的库项目执行相同的操作,将其放在“库”下。称它为“foo”,并确保它进入“Library”目录
  • 您现在应该可以编译它了

  • 如果你只在乎同名,那么这就是我的建议。如果你不介意的话,我将从零开始:

  • 创建一个空白的解决方案
  • 添加两个新的解决方案文件夹“应用程序”和“库”
  • 打开Windows资源管理器,转到解决方案目录,创建两个同名的目录,“应用程序”和“库”
  • 返回Visual Studio,在“应用程序”下添加GUI项目。我们叫它“福”。确保将其放在步骤3中创建的“应用程序”目录下
  • 同样,对您的库项目执行相同的操作,将其放在“库”下。称它为“foo”,并确保它进入“Library”目录
  • 您现在应该可以编译它了

  • 如果你只在乎同名,那么这就是我的建议。如果你不介意的话,我将从零开始:

  • 创建一个空白的解决方案
  • 添加两个新的解决方案文件夹“应用程序”和“库”
  • 打开Windows资源管理器,转到解决方案目录,创建两个同名的目录,“应用程序”和“库”
  • 返回Visual Studio,在“应用程序”下添加GUI项目。我们叫它“福”。确保将其放在步骤3中创建的“应用程序”目录下
  • 同样,对您的库项目执行相同的操作,将其放在“库”下。称它为“foo”,并确保它进入“Library”目录
  • 您现在应该可以编译它了

  • 你知道你可以像使用.dll一样向.exe程序集添加依赖项吗?从.Net的角度来看,这会让人感到困惑,因为这两个程序集都将被命名为Foo(其中一个是exec)