C# 使用“任意CPU”使用SQL Server CE 4.0 SP1部署应用程序

C# 使用“任意CPU”使用SQL Server CE 4.0 SP1部署应用程序,c#,.net,windows,dll,sql-server-ce,C#,.net,Windows,Dll,Sql Server Ce,我计划使用私有部署创建一个使用SQL Server CE 4.0 SP1的应用程序。因此,现在我计划使用私有部署。因此,所有的dll都必须包含在项目中,如前所述 但我试着从我的XP PC 32位添加所有dll,没有添加任何64位dll,但提到要添加64位dll。然后我将平台设置为任何CPU。在构建应用程序后,我尝试在64位PC上运行我的应用程序,它工作正常!!!我希望它会给出错误,因为我没有包括64位DLL 然后我使用ISWOW64ProcessAPI检查应用程序是否真的在64位上运行。当我设置

我计划使用私有部署创建一个使用SQL Server CE 4.0 SP1的应用程序。因此,现在我计划使用私有部署。因此,所有的dll都必须包含在项目中,如前所述

但我试着从我的XP PC 32位添加所有dll,没有添加任何64位dll,但提到要添加64位dll。然后我将平台设置为任何CPU。在构建应用程序后,我尝试在64位PC上运行我的应用程序,它工作正常!!!我希望它会给出错误,因为我没有包括64位DLL

然后我使用ISWOW64ProcessAPI检查应用程序是否真的在64位上运行。当我设置任何cpu和64位时,它返回false,表示它在64位上运行。当我设置为x86时,它返回true,表示它在wow64as 32位进程下运行。如果我将其设置为x64,它可以在64位pc中正常工作,但SQL Server CE DLL是32位的。为什么会发生这种情况?我的计划是使用任何cpu,使其在32位PC中作为32位处理器工作,在64位PC中作为64位进程工作。所以我缺少的是。为什么即使我设置了任何cpu或x64,它也能工作

编辑:

我已经找到了它在64位PC上工作的原因。这是因为PC已经安装了SQL CE 4.0 SP1。所以应用程序使用安装路径中的dll,而不是使用应用路径中的文件,应用路径中的32位dll不支持任何cpu的64位应用程序

但是现在我正在跟踪上面提到的链接,并添加了x86和AMD64,而不是链接文件夹中提到的x64,以及相应的DLL和Microsoft.VC90.CRT DLL。默认情况下,它在windows 7.net 3.5上正常工作-未安装sql ce。在windows XP sp3中,仅使用我安装的操作系统重新安装.net 2.0,然后运行我的应用程序。成功了

1那么SQL CE 4.0 SP1私有部署是否需要.net 3.5?如果我只使用.NET2.0,会不会导致其他问题

2我发现我们需要修改app.config以引用私有ADO.NET提供程序,它的程序集版本为4.0.0.1,而不是4.0.0.0,正如GAC中提到的那样,我没有这样做,它和我的应用程序工作正常。那么,是否需要这样做?如果我不添加它,它会在任何.net框架中导致错误吗

3我没有包括System.Data.SqlServerCe.Entity dll。我正在使用SqlCeConnection连接到数据库。那么是否需要添加System.Data.SqlServerCe.Entity dll?还有一些我发现类似此dll的地方需要.net 3.5,所以microsoft建议安装.net 3.5以用于SQL CE 4.0 SP1的私有部署,这与我的第一个问题有关吗


您可以下载我的项目

听起来ypur进程总是一个32位进程。您是否使用.net 4,5并设置了首选32位选项?否。我使用的是VS 2010。它有任何cpu选项。“首选32位”选项仅适用于vs 2012及更高版本。我已对我的问题进行了更改。plz检查。ISWOW64进程返回正确,当我设置任何cpu或64时,它仅作为64位进程运行。@ErikEJ请查看我编辑的问题。