.net 程序集版本加载问题和SQL CE

.net 程序集版本加载问题和SQL CE,.net,assemblies,sql-server-ce,windows-ce,fusion,.net,Assemblies,Sql Server Ce,Windows Ce,Fusion,我有一个应用程序,它利用了SQLCE3.5和.NET3.5中的实体框架 我们在SQL CE 3.5 SP2 RTM中遇到了一个导致应用程序崩溃的已知问题。因此,我们获得了累积更新2,它显然解决了这个问题 由于我们在应用程序中通过XCopy部署了sqlce,因此我们假设简单地用CU2版本替换本地托管和非托管dll就可以了 如果SQL CE已经提前安装在机器上(因此在GAC中),我们的应用程序将忽略程序集和DLL的较新版本,并从GAC加载旧的、损坏的版本 我们确定,卸载SQLCE(并因此将其从GAC

我有一个应用程序,它利用了SQLCE3.5和.NET3.5中的实体框架

我们在SQL CE 3.5 SP2 RTM中遇到了一个导致应用程序崩溃的已知问题。因此,我们获得了累积更新2,它显然解决了这个问题

由于我们在应用程序中通过XCopy部署了sqlce,因此我们假设简单地用CU2版本替换本地托管和非托管dll就可以了

如果SQL CE已经提前安装在机器上(因此在GAC中),我们的应用程序将忽略程序集和DLL的较新版本,并从GAC加载旧的、损坏的版本

我们确定,卸载SQLCE(并因此将其从GAC中删除)或更新GAC的程序集可以让我们的应用程序使用正确的版本


有更好的办法吗?我尝试了Assembly.LoadFile,但似乎不起作用。(两个版本都已加载,但旧版本才是实际使用的版本。)

是否针对特定版本的SQL CE程序集?在属性选项卡中,检查引用的特定版本属性是否设置为True。还要检查您是否没有程序集绑定重定向来指示.Net framework使用旧程序集


我只能假设累积更新2增加了版本号,如果是这种情况,那么只有在程序集版本完全匹配的情况下才应该使用GAC中的程序集。如果它们不匹配,.Net framework应该使用在应用程序目录中找到的程序集,因为它们与版本号完全匹配。

我要赞扬您,因为您的做法是正确的。事实上,我发现我只是偶然地错配了我的程序集引用。见: