无法加载文件或程序集'System.Data.SqlServerCE'

时间:2014-03-03 16:08:10

标签: sql-server vb.net sql-server-ce

我正在尝试使用VS.NET中的VB.NET连接到外部.sdf文件。我在使用System.Data.SqlServerCE DLL时遇到问题。

当我不复制本地时,我收到错误:无法加载文件或程序集'System.Data.SqlServerCe,Version = 3.5.1.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。系统找不到指定的文件。

如果我复制本地我得到:无法加载文件或程序集'System.Data.SqlServerCe,Version = 3.5.1.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

我安装了SQL Server Compact版本4,因此我在“C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v4.0 \ Private”中引用了DLL。我尝试从其他位置添加此DLL,并将获得“发现相同依赖程序集的不同版本之间的冲突”警告。如果我点击它,它会将以下内容添加到app.config:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845DCD8080CC91" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

将其添加到app.config后,我收到此错误:

无法加载与版本8876的ADO.NET提供程序对应的SQL Server Compact的本机组件。安装正确版本的SQL Server Compact。有关更多详细信息,请参阅知识库文章974247.


我之前注意到的一件事是System.Data.SqlServerCe不在C:\ Windows \ Microsoft.NET \ assembly文件夹中。我使用gacutil.exe安装了DLL并更改了

<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>

在app.config中

<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>

(4.0.0.0是gacutil列出的版本)。

至少让我超越了装配错误。 :)

现在为自己发布答案还为时过早,所以我将离开此编辑。

1 个答案:

答案 0 :(得分:1)

我设法使用C:\ Program Files \ Microsoft SQL Server Compact Edition \ v4.0 \ Desktop \ System.Data.SqlServerCe.dll修复了上述问题。因此路径C:\ Program Files \ Microsoft SQL Server Compact Edition \ v4.0 \ Private中的System.Data.SqlServerCe.dll不起作用。