c#应用程序通过visual studio运行良好,但独立的exe失败

时间:2015-06-05 21:56:25

标签: c# visual-studio-2012

当我通过Visual Studio 2012运行或通过Debug / Release文件夹执行.exe时,我的C#应用​​程序运行正常(在调试和发布模式下),但是当我将.exe复制到其他位置并运行时,它会失败它。我收到的错误消息是:

  

无法加载文件或程序集' bms.Common,Version = 5.0.0.1006,Culture = neutral,PublicKeyToken = null'或其中一个依赖项。系统找不到指定的文件。

我将.exe从Debug / Release文件夹复制到某个文件夹。我做错了吗?

2 个答案:

答案 0 :(得分:1)

在Debug文件夹中只存在.exe文件?没有其他的dll?您应该将所有.dll文件从Debug文件夹复制到目标目录以及.exe文件。 如果要将所有库打包到一个可执行程序集中,请查看ILMerge实用程序http://www.microsoft.com/en-us/download/details.aspx?id=17630

用法:

C:\ Program Files(x86)\ Microsoft \ ILMerge> ilmerge C:\ my.exe C:\ my.dll /out:C:\merged.exe

答案 1 :(得分:1)

一般来说,您应该将DLL部署在与可执行文件相同的文件夹中。使用.NET,我们通常不会将所有内容编译成一个大的.exe,就像链接c程序一样。

有一些例外:例如,您可以将DLL放在GAC中或将它们放在其他位置并提供所谓的“探测路径”。"这些都是先进的方法,除非你知道自己在做什么,否则不应该使用它们。

有关.NET如何解析DLL引用的完整信息,建议您阅读here