Как я могу связать распространяемый VC ++ 2015 с моим приложением ClickOnce (.NET)?

У меня есть приложение C #, работающее на .NET Framework 4.5, развернутое через Microsoft ClickOnce. Я также использую небольшую утилиту из пакета Microsoft SDK под названием DComPerm.exe, которая является приложением C ++, которое мне пришлось компилировать отдельно. Мое основное приложение использует Process.Start() чтобы получить доступ к этому исполняемому файлу.

Когда я впервые попытался запустить это на клиентском компьютере, я получил сообщение об ошибке, в котором говорилось, что VCRUNTIME140.dll отсутствует, когда приложение пытается вызвать DComPerm.exe.

VCRUNTIME140.dll отсутствует

Это имеет смысл … поскольку эта программа была скомпилирована в C ++, ей нужен распространяемый пакет Visual C ++ 2015, который не был установлен на клиентском компьютере. Я хочу сделать это как можно более безболезненно, поэтому я надеялся, что смогу связать VC ++ 2015 Redist с моим приложением ClickOnce. В свойствах проекта> вкладка «Опубликовать» есть кнопка «Необходимые условия», которая позволяет мне указать, что приложение должно связывать распространяемый пакет.

Предварительные условия на вкладке «Опубликовать»

Это звучит прекрасно в теории, но это не работает. Теперь, когда я пытаюсь установить приложение ClickOnce на клиентском компьютере, оно не работает. Установка завершается неудачно и указывает мне на файл журнала, который содержит следующую соответствующую информацию:

‘RunCheck’ Visual C ++ «14» библиотеки времени выполнения (x86) ‘: требуется установка

Установка компонентов «Visual C ++» 14 «Runtime Libraries (x86)» была принята.

Копирование файлов во временный каталог «C: \ Users \ Владелец \ AppData \ Local \ Temp \ VSD3872.tmp \»

Загрузка файлов в «C: \ Users \ Владелец \ AppData \ Local \ Temp \ VSD3872.tmp \»

(04.08.2016, 12:57:48) Загрузка файла ‘vcredist_x86 \ vcredist_x86.exe’ из ‘http://go.microsoft.com/fwlink/?LinkID=800028&clcid = 0x409‘to’ C: \ Users \ Владелец \ AppData \ Local \ Temp \ VSD3872.tmp \ ‘

Загрузка завершена 04.08.2016, 12:57:49

Загрузка не удалась с HRESULT = -2146697208

И это сообщение ясно дает понять, в чем проблема: ссылка то, что он пытается использовать, чтобы загрузить пакет переадресации, мертв. Только … Я не уверен, как я могу сказать это, чтобы найти правильную ссылку. Я весьма удивлен, что он не может найти его автоматически, поскольку это похоже на ошибку в Visual Studio. Некоторые поиски показали, что правильная ссылка на самом деле этот, но это не то, что решает ClickOnce. Я также увидел, что, установив флажок, это было соответствующее обновление XML для моего файла csproj:

<BootstrapperPackage Include="Microsoft.Visual.C++.14.0.x86">
<Visible>False</Visible>
<ProductName>Visual C++ "14" Runtime Libraries %28x86%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>

Есть ли какой-нибудь тег XML, который я могу использовать, чтобы явно указать местоположение? Или как еще я могу это исправить? Как я могу связать распространяемый пакет, не ломая мое приложение?

6

Решение

У меня была почти та же проблема. Вы спросили, как указать место загрузки, которое разрешает ClickOnce. Для этого откройте

C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\en\package.xml

и отредактируйте атрибут с помощью Name="https://go.microsoft.com/fwlink/..." на правильный URL. Кстати, спасибо за то, что нашли правильную ссылку для скачивания, я не смог найти ее, пока не увидел этот пост.

После этого VC ++ Redis правильно установлен на клиентском компьютере.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]