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

时间:2011-11-04 00:17:43

标签: visual-studio-2010 windows-7 64-bit installation 32-bit

在Windows 7 64位计算机上使用Visual Studio 2010构建Windows窗体应用程序的安装程序安装程序以在Windows 7 32位计算机上安装和运行的正确方法是什么?

我刚刚使用SQL Express 2005刷掉了使用Windows XP构建的3年历史的Visual Studio 2008应用程序。

我已将其更新到VS2010,SQL Express 2008,并在Windows 7 64位计算机上重建。它需要在Windows 7 32位平台上运行。

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

我已经完成了解决方案中的每个项目,并将其设置为使用x86构建(而不是任何CPU)。我删除了所有先决条件。唯一可疑的东西是DB CustomAction项目(运行db脚本)。

从谷歌搜索看来,我建立在64位机器上的“任何CPU”,意味着它应该生成将通过WOW在32位机器上运行的安装文件?并且不必进行我所做的所有改变?我错过了一些明显的东西吗?

感谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

  • 在解决方案资源管理器中选择您的安装项目
  • 转到“属性”窗格
  • 确保 TargetPlatform 设置为 x86

答案 1 :(得分:1)

我总是觉得遇到同样问题的帖子令人沮丧,因为我从来没有发布决议。所以我会发布我发现的东西,如果它,甚至一些,如果它,有一天对他人有用。我发现很多其他开发人员报告说这个漫无目的的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,并编辑Login LoginMode = 2 for Mixed。再一次,没有解决问题,应用程序仍然产生'已停止工作'的消息。

接下来,我偶然发现一些关于此消息的帖子可能是在启动期间通过在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目录上,使应用程序在测试机器上运行?但无论如何,它解决了这个问题,并希望这对其他人有所帮助。