当我通过Visual Studio 2012运行或通过Debug / Release文件夹执行.exe时,我的C#应用程序运行正常(在调试和发布模式下),但是当我将.exe复制到其他位置并运行时,它会失败它。我收到的错误消息是:
无法加载文件或程序集' bms.Common,Version = 5.0.0.1006,Culture = neutral,PublicKeyToken = null'或其中一个依赖项。系统找不到指定的文件。
我将.exe从Debug / Release文件夹复制到某个文件夹。我做错了吗?
答案 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。