在Windows 7 64位计算机上为Windows 7 32位平台构建C#

问题描述:

在Windows上使用Visual Studio 2010在Windows 7 32位计算机上安装和运行Windows Forms应用程序时,构建安装程序安装程序的正确方法是什么7 64位机器?在Windows 7 64位计算机上为Windows 7 32位平台构建C#

我刚刚刷去灰尘,一个3年期的老Visual Studio 2008中的应用,建立在Windows XP中,使用了SQL Express 2005

我已经更新,以VS2010,SQL Express的2008年,并重建它一台Windows 7 64位机器。它需要在Windows 7 32位平台上运行。

运行时,数据库的安装项目会保持失败(启动时),并说它仅适用于x64机器。 (该应用程序的设置运行正常并安装。)

我已经通过解决方案中的每个项目,并将其设置为使用x86构建(而不是任何CPU)。我已删除所有PreRequisites。唯一怀疑留在那里的是一个DB CustomAction项目(它运行数据库脚本)。

从谷歌搜索看来,我在64位机器上搭建'任何CPU',意味着它应该产生安装文件,通过WOW在32位机器上运行?而不必做出我所做的所有改变?我错过了什么明显的东西?

谢谢。

试试这个:

  • 在解决方案资源管理器中选择安装项目
  • 打开属性窗格
  • 确保上投放设置为

我总是感到沮丧的是,我遇到了同样问题的帖子,从来没有发布过解决方案。所以我会张贴我发现的情况,甚至有些情况下,有一天它对其他人有用。我发现很多其他开发者报告无目标的Windows 7程序“已停止工作”消息。

顺便说一句,我找到了测试部署应用程序的最简单方法,安装程序是建立一个虚拟PC机,它的配置与平台最终运行时相同。然后复制该虚拟PC,并在副本上运行测试。这样,我可以随时删除副本,快速重新复制并重新开始。

是的,正如Cosmin所说,解决方案的TargetPlatform属性也需要设置为x86。无论如何,没有解决这个问题,该应用程序仍然产生'已停止工作'的信息。

接下来我检查了SQL日志ERRORLOG文件(c:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQLExpress \ MSSQL \ Log),它报告应用程序试图使用混合模式身份验证进行登录,而设置了SQL用于Windows身份验证。现在我知道我在安装SQL Express时选择了混合模式,因为我的应用使用了一个SQL服务帐户,我的数据库安装程序为其创建帐户。所以不知何故,这是由什么改变(不知道什么?)。要通过SQL Server Management Studio设置为混合模式,只需右键单击该实例,选择安全性并更改服务器身份验证。如果没有Management Studio,您需要编辑注册表HKEY_LOCAL_MACHINE/Software/Microsoft/Microsoft SQL Server // MSSQLServer,并编辑关键的LoginMode = 2以获取混合。再一次,没有解决问题,该应用程序仍然产生'已停止工作'的信息。

接下来,偶然我偶然发现有关此消息的一些帖子可能会在启动过程中通过在Windows 7上加载32位应用程序而引起。我在第一行放置了MessageBoxes和Try/Catchs,而且他们从未显示过,并没有发现错误。

我试过的下一件事是在我的exe文件上运行DependencyWalker。它报告2 x 32位文件丢失:IEShims.dll和GPSVC.dll。有来自其他开发者遇到此问题的帖子,最终结果是我在C:\ Windows \ winsxs中找到它们(GPSVC.dll被称为x86_microsoft-windows-g..licy-base.resources_31bf3856ad364e35_6.1.7600.16385_en-us_c10af1bed239c523_gpsvc.dll .mui_0c160ac2)。我将它们放到C:\ Windows \ System32中,重新编译我的应用程序,将其部署到我的测试机器,然后它终于运行!

仍然不明白为什么只是把它们放到我的开发箱上的System32目录使应用程序在测试机上运行?但无论如何,它解决了这个问题,并希望这对其他人有所帮助。