Пакеты платформы среды выполнения C++ для мост для классических приложений

В этой статье описывается создание контейнера мост для классических приложений, содержащего правильные библиотеки среды выполнения C++.

Исходная версия продукта: Windows 10
Исходный номер базы знаний: 3176696

Сводка

Классические приложения Windows, которые зависят от библиотек среды выполнения C++, должны указывать соответствующую версию пакета платформы среды выполнения C++ для мост для классических приложений во время создания пакета приложения. Это необходимо сделать, а не просто распространять библиотеки среды выполнения C++, включенные в Visual Studio или распространяемый компонент среды выполнения Visual C++ (VCRedist). Классические приложения Windows, выполняемые в контейнере мост для классических приложений, не могут использовать библиотеки среды выполнения C++, включенные в Visual Studio или VCRedist. Приложение, работающее в контейнере мост для классических приложений и использующее неправильную версию библиотек среды выполнения C++, может завершиться ошибкой при попытке получить доступ к ресурсам, таким как файловая система или реестр. В этой статье описывается создание контейнера мост для классических приложений, содержащего правильные библиотеки среды выполнения C++.

Установка и обновление пакетов платформы рабочего стола

Корпорация Майкрософт предоставляет пакеты платформы среды выполнения C++, позволяющие приложениям ссылаться на среду выполнения C++ из классических приложений, распространяемых через Магазин Windows. Эти пакеты распространяются и обновляются через Магазин Windows и обрабатываются аналогично пакетам платформы UWP C++.

В целях разработки текущая версия (версия 14.0) пакетов отладочных и розничных приложений включается в Visual Studio 2019 при выборе рабочей нагрузки разработка универсальная платформа Windows с дополнительным компонентом универсальных средств Windows для C++ (v142). Пакеты можно найти в разделе %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0.

В некоторых сценариях, таких как Песочница Windows или когда приложения выполняются на автономных компьютерах, разработчикам может быть проще скачать пакеты, соответствующие их архитектуре развертывания, по одной из приведенных ниже ссылок и вручную установить их с помощью командлета Add-AppxPackage PowerShell:

Устаревшие пакеты платформы рабочего стола

Старые пакеты платформы среды выполнения C++ для классических приложений версии 11.0 и 12.0 можно скачать и установить из следующих расположений:

Пакеты платформы среды выполнения C++ будут скопированы во вложенную папку в разделе %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop. Пакеты можно установить вручную с помощью командлета Add-AppxPackage PowerShell.

Как ссылаться на пакеты платформы рабочего стола

В файле AppxManifest.xml приложения укажите PackageDependency значение, соответствующее соответствующему пакету платформы:

  • Версия 11.0:

    <Dependencies>
        <PackageDependency Name="Microsoft.VCLibs.110.00.UWPDesktop" MinVersion="11.0.61135.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"/>
    </Dependencies>
    
  • Версия 12.0:

    <Dependencies>
        <PackageDependency Name="Microsoft.VCLibs.120.00.UWPDesktop" MinVersion="120.40653.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
        <PackageDependency Name="Microsoft.VCLibs.120.00.UWPDesktop" MinVersion="12.0.40653.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
    </Dependencies>
    
  • Версия 14.0:

    <Dependencies>
        <PackageDependency Name="Microsoft.VCLibs.140.00.UWPDesktop" MinVersion="14.0.24217.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
    </Dependencies>
    

Теперь приложение установит библиотеки DLL среды выполнения C++ из пакета зависимостей при его развертывании.

Ссылки

Использование среды выполнения Visual C++ в проекте Centennial