我有一个最初在VS2005中创建的C#windows移动应用程序,用于创建 一个测试数据库。但是,现在我已经将C#代码包含在VS2008中了 项目并重新设置SQL引用,我收到以下错误:
发生了'System.TypeLoadException'类型的未处理异常 未知模块。
附加信息:文件或程序集名称'System.Data.SqlServerCe, Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 3BE235DF1C8D2AD3',或者之一 没有找到它的依赖。
参考路径似乎很好。有什么想法吗?
谢谢,
答案 0 :(得分:5)
尝试删除并阅读参考文献。
快速浏览一下我自己的GAC,显示该库有不正确的PublicKeyToken
Assembly: System.Data.SqlServerCe
Culture: Neutral
Version: 3.5.0.0
Public Key Token: 89845dcd8080cc91
快速谷歌之后,它看起来像是您引用桌面平台版本而不是设备平台版本。
在这里看到这篇文章
不支持在桌面上运行Sql Mobile应用程序 (除了您的桌面是TabletPC)。
System.Data.SqlServerCe(桌面平台)的公钥令牌是3be235df1c8d2ad3
System.Data.SqlServerCe(设备平台)的公钥令牌是89845dcd8080cc91
答案 1 :(得分:0)
您是否将项目设置为.Net Compact Framework 3.5项目?我想如果它仍然作为2.0项目加载,那么从3.5框架加载程序集会遇到问题。
答案 2 :(得分:0)
我猜你的问题是你可以加载命名的程序集,但其中一个依赖项仍被引用为上一个项目设置的2.0版本。 浏览所有引用的程序集,确保它们都来自同一版本的框架。 (这实际上不是要求它们都来自同一版本,但从长远来看它确实让生活更轻松)。问题是,如果你使用v3.5将具有v3.5依赖性,如果你只是重新构建v2.0程序集,你将得到上述错误
答案 3 :(得分:0)
我有同样的问题。对我有用的是从Pocket PC设备中完全删除以下内容:
<MY APP>
Microsoft .Net CF 3.5 EN-String R...
Microsoft .Net CF 3.5
SQLServerCompact 3.5 Tools EN
SQLServerCompact 3.5 Repl
SQLServerCompact 3.5 Core
然后安装: NETCFv35.ppc.armv4.cab(Microsoft .Net CF 3.5) NETCFv35.Messages.EN.cab(Microsoft .Net CF 3.5 EN-String R ...) sqlce.ppc.wce4.armv4.CAB(SQLServerCompact 3.5 Core)
您可能只需删除并重新安装SQLServerCompact 3.5软件包即可。这对我有用。