Visual Studio中添加可执行文件具有相同名称的dll(Visual Studio addi

2019-07-20 03:40发布

在Visual Studio 2008年,我加入WinScp.dll(在项目根)作为参照,马上出现了一个黄色图标。 在编译时:

  • 类型或命名空间名称“的WinSCP”找不到(是否缺少using指令或程序集引用?)
  • 解决文件有一个不好的形象,没有元数据,或者是不可访问。 无法加载文件或程序集“E:\ winscp.exe”或它的一个依赖。 该模块应包含一个程序集清单。

一个小时的挫折后,我想通了,如果我删除WinSCP.exe作为一个项目文件(也是项目的根),一切编译罚款。 奇怪的!!!!

问题是,我需要同时WinSCP.dll和WinSCP.exe在我的输出目录。 我该怎么办?

编辑 :据我所知,有变通办法,如重命名文件或改变路径。 我改名为exe文件在第一; 现在我重新命名的DLL(感谢@迈克尔),因为它不要求我还可以指定在我的代码重命名的exe文件。

但为何有摆在首位的问题吗? WinSCP.dll和WinSCP.exe是两个不同的文件。 这是在Visual Studio中的错误,或者DLL / EXE的复杂性,我不明白?

Answer 1:

WinSCP.dll和WinSCP.exe是两个不同的文件

不大会装载机,它不讲究文件扩展名。 它只知道的是,它需要找到一个组件,“WinSCP赋予”的显示名称 。 当匹配搜索,它首先会尝试使用该名称,旁边一个DLL文件中的EXE文件。 有些事情,你可以用Fuslogvw.exe实用看到。 显示名称在此描述的博客文章由微软的家伙,融合组件上的工作:

在“名称”部分通常是组件的文件名, 不包括扩展名 。 因此,对于装配foo.dll,“名称”部分是“富”。 当然,因为我说:“通常”,有些时候,“名称”部分是不一样的排除扩展名的文件名。 我会有点讨论这个问题。

着重强调。 因此,它首先找到WinSCP.exe,这是一个KABOOM,它不是一个有效的.NET程序集。 简单的解决办法是重命名该DLL,改变所述组件的显示名称。



文章来源: Visual Studio adding executable file with same name as dll