引用的dll设置为ClickOnce清单中的先决条件

时间:2017-12-28 16:28:29

标签: c# visual-studio dll clickonce prerequisites

我有一个在我们的网络上引用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已经安装,但我不知道为什么。这已经工作了几个月。我能想到的唯一变化就是添加另一个dll,它也引用了TXml

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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