使用 ClickOnce 安装我的应用程序 - 缺少 dll 消息(尽管未请求)

Installing my application with ClickOnce - missing dll message (although not requested)

我已经完成了 clickOnce 安装程序。好像还可以,就是有点小问题

我已将 sql 服务器 2008 express 设置为先决条件。

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

奇怪的是,阅读 this link,sql 服务器 2008 需要版本 10(而 2012 要求版本 11)。

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

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

至少,如何才能发现谁需要它?

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

中用这个映射解决了
  <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>

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