我有一个在我们的网络上引用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
答案 0 :(得分:0)
这并没有真正回答这个问题,但它解决了我的问题。我删除了对两个dll的引用,然后首先添加了对TXml.dll的引用,然后添加了对其他dll的引用(也引用了TXml),并清理和发布,并且有效。 TXml不再作为清单中的先决条件出现了。
答案 1 :(得分:0)
这次,我遇到了与NuGet软件包类似的问题。我必须删除使用错误消息所针对的dll的一个依赖项(我的内部Nuget包之一),然后再次将其重新添加。
在清单文件中,在解决我的问题之前,我在错误所针对的dll上遇到了重复项。第一个请求“ preRequesite”,第二个请求“安装”。之后,我只剩下“安装”一个...问题解决了。