带有SQL Server CE的未知模块中的System.TypeLoadException

时间:2009-06-05 07:50:30

标签: .net windows-mobile sql-server-ce

我有一个最初在VS2005中创建的C#windows移动应用程序,用于创建 一个测试数据库。但是,现在我已经将C#代码包含在VS2008中了 项目并重新设置SQL引用,我收到以下错误:

发生了'System.TypeLoadException'类型的未处理异常 未知模块。

附加信息:文件或程序集名称'System.Data.SqlServerCe, Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 3BE235DF1C8D2AD3',或者之一 没有找到它的依赖。

参考路径似乎很好。有什么想法吗?

谢谢,

4 个答案:

答案 0 :(得分:5)

尝试删除并阅读参考文献。

快速浏览一下我自己的GAC,显示该库有不正确的PublicKeyToken

Assembly:         System.Data.SqlServerCe
Culture:          Neutral
Version:          3.5.0.0
Public Key Token: 89845dcd8080cc91

快速谷歌之后,它看起来像是您引用桌面平台版本而不是设备平台版本。

在这里看到这篇文章

http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/f509138c-8442-4bef-916a-a97bda4721ee

  

不支持在桌面上运行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软件包即可。这对我有用。