Мое приложение использует элемент управления «Adobe PDF Reader» для просмотра PDF-документов в форме Windows. Он публикуется как приложение ClickOnce. Если я опубликую его с помощью Visual Studio 2013, он будет установлен и работает нормально. Но если я опубликую его с помощью Visual Studio 2017 (без внесения каких-либо изменений в решение), он будет установлен, но не запустится. Выдает эту ошибку:
System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'AxInterop.AcroPDFLib, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = 963d585c671a3ae6' или одна из ее зависимостей. Система не может найти указанный файл.
Поэтому я пошел в «Публикация / файлы приложений ...» в Visual Studio, чтобы включить отсутствующую DLL, только чтобы узнать, что я не смог включить ее, потому что ее нет в списке.
В VS 2017 окно «Файлы приложений» выглядит так:
Но в VS 2013 окно «Файлы приложения» выглядит так:
Теперь в VS 2013 файл MANIFEST, опубликованный в папке ClickOnce, содержит этот 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>
Но приведенный выше XML отсутствует в файле MANIFEST при публикации с VS 2017.
Опять же, имейте в виду, что это точно такой же проект и решение. Я ничего не изменил.
Что мне нужно сделать, чтобы опубликованная версия VS 2017 включала необходимую информацию о зависимостях? Это ошибка или я что-то упустил?
Спасибо!