【问题标题】:Referenced dll set as prerequisite in ClickOnce manifest引用的 dll 在 ClickOnce 清单中设置为先决条件
【发布时间】:2017-12-28 16:28:29
【问题描述】:

我有一个引用我们网络上的 dll 的解决方案。当我为 .exe 构建解决方案时,一切正常。

当我将解决方案发布为 ClickOnce 应用程序时,我收到一条错误消息,告诉我 dll 未安装在 GAC 中。当我查看清单时,它具有 dll 作为“安装”类型的依赖项和类型“先决条件”。

<dependency>
  <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
    <assemblyIdentity name="TXml" version="1.0.0.0" publicKeyToken="565779B9F3980A62" language="neutral" processorArchitecture="msil" />
  </dependentAssembly>
</dependency>  
<dependency>
  <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="TXml.dll" size="6656">
    <assemblyIdentity name="TXml" version="1.0.0.0" publicKeyToken="C07302FBA7BB7B05" language="neutral" processorArchitecture="msil" />
    <hash>
      <dsig:Transforms>
        <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
      </dsig:Transforms>
      <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />     <dsig:DigestValue>iI2aM7MMNzTPBWBCFhdSh9akFMtSNqw8HUItuXyf+xU=</dsig:DigestValue>
  </hash>
</dependentAssembly>

我想知道 Visual Studio/ClickOnce 中的什么决定 dll 应该是一个附加组件?它不会显示在发布选项卡或属性下的应用程序文件中。此项目中也引用了其他 dll 引用了相同的 dll。跟这个有关系吗?

问题显然是它期望 TXml 已经安装,但我不知道为什么。这已经工作了几个月。我能想到的唯一改变是添加另一个引用 TXml 的 dll

【问题讨论】:

    标签: c# visual-studio dll clickonce prerequisites


    【解决方案1】:

    这并不能真正回答问题,但它解决了我的问题。我删除了对这两个 dll 的引用,然后首先添加了对 TXml.dll 的引用,然后是对另一个 dll 的引用(也引用了 TXml),然后清理并发布了,这很有效。 TXml 不再作为先决条件出现在清单中。

    【讨论】:

      【解决方案2】:

      这次我遇到了与 NuGet 包类似的问题。我必须删除使用错误消息所针对的 dll 的依赖项(我的内部 Nuget 包之一),然后重新添加。

      在清单文件中,在我的问题得到解决之前,我遇到了错误所针对的 dll 上的重复项。第一个是要求“preRequesite”,第二个是要求“安装”。之后,我只剩下“安装”一个...问题解决了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        • 2016-04-21
        相关资源
        最近更新 更多