C# 使用InstallShield限量版项目生成.exe文件后,System.Data.SqlServerCe.dll SQL Server CE 3.5引用丢失

C# 使用InstallShield限量版项目生成.exe文件后,System.Data.SqlServerCe.dll SQL Server CE 3.5引用丢失,c#,dll,visual-studio-2013,sql-server-ce,installshield-2013,C#,Dll,Visual Studio 2013,Sql Server Ce,Installshield 2013,我将VS2013与InstallShield限量版项目一起使用 在我创建了对System.Data.SqlServerCe.dll的引用的开发环境中,一切都正常工作 生成.exe文件并安装应用程序后,它无法找到SQL Server CE 3.5的引用,因此自动获取SQL Server CE 4.0的引用,并给出了一个错误 数据库版本不兼容。如果这是兼容文件,请运行修复。有关其他情况,请参阅文档。[Db version=4000000,请求的版本=3505053,文件名=\?\C:\Users\s

我将VS2013与InstallShield限量版项目一起使用

在我创建了对System.Data.SqlServerCe.dll的引用的开发环境中,一切都正常工作

生成.exe文件并安装应用程序后,它无法找到SQL Server CE 3.5的引用,因此自动获取SQL Server CE 4.0的引用,并给出了一个错误

数据库版本不兼容。如果这是兼容文件,请运行修复。有关其他情况,请参阅文档。[Db version=4000000,请求的版本=3505053,文件名=\?\C:\Users\someuser\AppData\Local\testapp\testdb.sdf]

我试着浏览了有关MSDN的文章,但在我的项目属性中找不到任何发布选项卡

此外,我正在部署System.Data.SqlServerCe.dll和所有7个32位版本的SQL Server CE 3.5 dll

sqlceca30.dll
sqlcecompact30.dll
sqlceer30en.dll
sqlceme30.dll
sqlceoledb30.dll
sqlceqp30.dll
sqlcese30.dll

不,问题是您的数据库文件是4.0格式的。从错误消息中可以看到,引擎试图打开一个3,5文件,但得到的是一个4,0文件。因此,您的应用程序正在使用3,5引擎。

问题是,当我尝试使用InstallShield部署msi包时,它使用了与当前设置x86不同的构建设置x64,这导致我的应用程序获取x64 Sql Server CE 4.0文件的引用。
因此,它是通过更改singleimage编译选项的设置来修复的。

@ErikEJ请详细说明,因为这篇文章被标记为低质量文章。现在跳过它。我知道错误的含义,但它只在使用.exe文件部署应用程序后存在,而不是在使用visual studio运行应用程序时存在。那么有没有类似于泛型引用的东西?或者我遗漏了一些额外的参考。我猜您的项目引用了错误版本的System.data.SqlServerCe