使用ClickOnce安装我的应用程序 - 缺少dll消息(虽然没有请求)

时间:2015-02-12 15:48:26

标签: c# .net sql-server wpf clickonce

我已经完成了clickOnce安装程序。这似乎没问题,但我有一点问题。

我已将sql server 2008 express设置为先决条件。

如果我将其更改为2012,它会正确安装必备组件,但是,当它开始安装我的应用程序时,它会出错,搜索Microsoft.SqlServer.management.dmf版本10.0.0.0。

奇怪的是,阅读this link,sql server 2008需要版本10(2012年要求版本11)。

那么,为什么要求版本10呢?我正在尝试空白虚拟机,所以我确定没有安装任何东西。

我还阅读了this,其中回答者说要进入项目属性>发布>应用程序文件并删除一些库(我已删除了microsoft.sqlServer库)。我做到了,但没有!它仍然要求Microsoft.SqlServer.management.dmf。它是使用共享管理对象安装在系统中的,但为什么要求提供sql server 2008的版本?

至少如何发现谁需要它?

下面是我在“发布”部分中的应用程序文件。如您所见,我已经排除了一些库。之前,他们被设定为先决条件。

enter image description here

2 个答案:

答案 0 :(得分:3)

中解决此映射问题
  <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.ConnectionInfo" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
        <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Diagnostics.STrace" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
        <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.SqlEnum" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Dmf" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.SqlClrProvider" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Management.SmoMetadataProvider" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Management.Sdk.Sfc" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Smo" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Management.SqlParser" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.ServiceBrokerEnum" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
      <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

答案 1 :(得分:1)

我通过在发件状态中包含Microsoft.SqlServer。*修复了它。项目属性>发布>应用程序文件>发布状态列,在所有Microsoft.SqlServer。*文件上选择“包含”。就我而言,它在更改后立即可以在下一个发布版本上使用。

enter image description here