c# - 是否可以在运行时将 System.Data.SqlServerCe 4.0.0.0 与版本 4.0.0.1 交换?

标签 c# dll assemblies sql-server-ce assemblybinding

我的应用程序引用了一个具有 System.Data.SqlServerCe 4.0.0.0 作为依赖项的库项目。

但是,我正在尝试私有(private)部署我的应用程序,这需要 System.Data.SqlServerCe 4.0.0.1。

因此,我设置了我的应用程序,以便将 System.Data.SqlServerCe 4.0.0.1 复制到输出目录(与可执行文件位于同一文件夹中),并将 assemblyBinding 添加到我的 App.config 文件中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  ...
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity
          name="System.Data.SqlServerCe.dll"
          publicKeyToken="89845dcd8080cc91" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.0.0.1" />
        <codeBase version="4.0.0.1" href="System.Data.SqlServerCe.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

不幸的是,我收到此错误:

Could not load file or assembly 'System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0X80131040)

问题

是否可以在运行时将 System.Data.SqlServerCe 4.0.0.0 与版本 4.0.0.1 交换以允许私有(private)部署?

最佳答案

您是否尝试删除 CodeBase 标记:http://blogs.msdn.com/b/sqlservercompact/archive/2010/05/12/troubleshooting-problem-with-private-deployment-of-sql-server-compact-3-5sp2-entity-dll.aspx 看起来您也应该从名称中删除 .dll。 下面的配置文件可以强制 Exportsqlce40.exe 针对私有(private) dll 文件运行(它们必须与 .exe 位于同一文件夹中):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.0.0.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

关于c# - 是否可以在运行时将 System.Data.SqlServerCe 4.0.0.0 与版本 4.0.0.1 交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6078596/

相关文章:

c# - EventArgs 作为事件模式中的基类的目的是什么?

c# - 在 C# 上为属性设置默认值

c++ - dll 缺少对 Windows 7 文件的依赖项

c# - 如何在 C# 中从内存启动程序?

c# - 那么 C#4.0 代码契约真的可以做任何事吗?

c# - 如何读取加载到内存中的模块的 PE header ?

dll - 这是 "better": COM DLL or Standard DLL with a Typelib?

c# - .NET + pInvoked C++ 动态链接库 + 多线程

c# - 如果存在某个属性,则加载程序集

.net - 依赖性检查