我的应用程序使用“ Adobe PDF Reader”控件在Windows窗体上查看PDF文档。它作为ClickOnce应用程序发布。如果我使用Visual Studio 2013发布它,它将安装并正常运行。但是,如果我使用Visual Studio 2017发布(未对解决方案进行任何更改),它将安装但无法运行。它引发此错误: System.IO.FileNotFoundException:无法加载文件或程序集“ AxInterop.AcroPDFLib,版本= 1.0.0.0,区域性=中性,PublicKeyToken = 963d585c671a3ae6”或其依赖项之一。系统找不到指定的文件。
因此,我去了Visual Studio中的“发布/应用程序文件...”,以包含丢失的dll,只是发现我由于未列出而无法将其包含。
现在在VS 2013中,发布在ClickOnce文件夹中的MANIFEST文件包含以下XML:
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="AxInterop.AcroPDFLib.dll" size="9216">
<assemblyIdentity name="AxInterop.AcroPDFLib" version="1.0.0.0" 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#sha1" />
<dsig:DigestValue>Nyyy1D0D9ublZaujf9VDo73k2Ic=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Interop.AcroPDFLib.dll" size="12800">
<assemblyIdentity name="Interop.AcroPDFLib" version="1.0.0.0" language="neutral" processorArchitecture="x86" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>ECgRqgvCeIc6FfkrboUllt0qScw=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
但是在VS 2017中发布时,清单文件中缺少上述XML。
同样,请记住,这是完全相同的项目和解决方案。我什么都没改变。
我需要做什么才能使VS 2017发布版本包含必需的依赖项信息?这是一个错误,还是我缺少什么?
谢谢!
答案 0 :(得分:1)
经过几天的调查和反复试验,我发现了一个解决此问题的简单方法:
然后,我使用VS 2017将我的应用程序发布为ClickOnce应用程序,并且一切正常。问题已解决!
Visual Studio 2013和Visual Studio 2017发布应用程序的方式之间显然存在差异,因为此“修复”在VS 2013中不是必需的,而在VS 2017中是必需的。