如何在visual studio 2012中部署具有所有依赖项的c#项目

时间:2013-11-10 16:52:14

标签: c# .net visual-studio visual-studio-2012

我在visual studio 2012中创建了一个小型的c#程序,我使用了两个外部dll库。当我构建要发布的项目时,它会创建包含许多其他文件的发布文件,包括我使用的外部dll。它适用于我的计算机,但如果我将整个发布文件复制到另一台计算机,它只会给我一个错误消息并退出。 该程序还需要运行什么?

错误消息是:

应用程序无法正确启动(0x000007b)。单击“确定”关闭应用程序。

1 个答案:

答案 0 :(得分:0)

我怀疑您的错误代码实际上是 0xC000007B (STATUS_INVALID_IMAGE_FORMAT),而不是0x0000007B(INACCESSIBLE_BOOT_DEVICE)。当您的应用程序遇到32位和64位版本的DLL之间的运行时混合时,前者很常见。

可能发生的事情是你的应用程序(比如它的32位)依赖于某个DLL,称之为FOO.DLL。在本地计算机上运行时,您将在路径上选择正确版本的32位版本的FOO.DLL。但是,当您部署到另一台计算机时,您将从系统路径上的某个位置获取64位版本。当加载程序发现64位DLL试图加载到您的32位应用程序时,抛出INVALID_IMAGE_FORMAT错误。

解决此问题的一种方法是识别DLL并使用您的应用程序重新分发正确的版本。