C# 32位winform应用程序不';t在64位操作系统上运行

C# 32位winform应用程序不';t在64位操作系统上运行,c#,winforms,C#,Winforms,我有两台笔记本电脑 1) BuildLaptop->我编写应用程序的笔记本电脑。Windows 7 Ultimate 32位,用于数据库的Office 2007 2) TestLaptop->测试应用程序。Windows7终极64位,Office2007 我的应用程序包含几个构建为AnyCPU的dll文件,并且该应用程序也构建为AnyCPU 当我试图在TestLaptop上测试我的应用程序时,它给了我一个错误: Microsoft.ACE.OleDb.12.0提供程序未在您的计算机上注册 所以我

我有两台笔记本电脑

1) BuildLaptop->我编写应用程序的笔记本电脑。Windows 7 Ultimate 32位,用于数据库的Office 2007

2) TestLaptop->测试应用程序。Windows7终极64位,Office2007

我的应用程序包含几个构建为AnyCPU的dll文件,并且该应用程序也构建为AnyCPU

当我试图在TestLaptop上测试我的应用程序时,它给了我一个错误:

Microsoft.ACE.OleDb.12.0提供程序未在您的计算机上注册

所以我从TestLapTop卸载了Office,并在BuildLapTop上安装了Office

同样的错误。然后我尝试将所有DLL以及我的应用程序编译到x64。应用程序无法启动。然后我尝试只将应用程序编译为x64,将DLL编译为anyCPU。错误再次发生


因此,请帮助我如何在TestLapTop上运行应用程序?

如果任何项目使用任何32位非托管资源(DLL等),则需要将其编译为
/platform:x86


根据您的评论,我不确定您是否遇到了此问题。如果已安装任何Microsoft Office程序:

  • 展望
  • 胜过
  • 幻灯片
如果它们是32位修订版,则无法安装64位Access数据库引擎,这将导致以下异常:

这将迫使您在64位计算机上安装32位版本。您可能还需要通过管理工具对ODBC数据源中的数据库进行一些额外的配置

希望这至少能澄清你在评论中提到的错误。至于编译,SixlettVariables有一个解决方案


希望这能有所帮助。

您的数据库使用什么,取决于您的类型,您可能需要在64位机器上的ODBC中定义它。它是否已安装?是否依赖于Office而不是OleDb提供程序?我是否需要将DLL(也)编译为x86?这很有效。但我必须以管理员的身份运行应用程序。否则它不会打开。我该怎么办?第二:我读到32位应用程序可以同时在32和64上运行,但64位应用程序可以在64上运行。那么你的答案是在每台机器上运行我的应用程序的最佳方式?或者我必须更改编码(例如,我应该解析'something'?,而不是像Convert.ToInt32(something)那样转换为int)。任何建议。我的感谢。如果你必须以管理员的身份运行它,你可能会有一些需要管理员的依赖关系。是的,对于任何使用32位非托管DLL的应用程序,都需要使用
/platform:x86
(即32位)。不需要更改编码,因为64位上的32位仍然是32位。最后要问的是,在我的应用程序中,我使用的是内置于“任何CPU”中的第三方库,如SourceGrid 4。在这种情况下我该怎么办?@DhavalR:如果他们不使用32位非托管DLL,只要您的可执行文件是
/platform:x86
,就可以了。