Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как настроить приложение, которое не установлено с помощью MSIX (то есть оно либо упаковано с использованием внешнего месторасположения, либо не упаковано), для использования API начальной загрузки, чтобы приложение явно загружало среду выполнения Windows App SDK и вызывало Windows App SDK API. Приложения, которые не установлены через MSIX, относятся к приложениям, упакованным для запуска с внешнего расположения, и неупакованным приложениям.
Внимание
Начиная с Windows App SDK 1.0, подход по умолчанию к загрузке Windows App SDK из пакетов с внешним расположением или при распаковке приложения заключается в использовании автоинициализации с помощью свойства проекта <WindowsPackageType> (а также внесении дополнительных изменений в конфигурацию). Действия, связанные с автоинициализацией в контексте проекта WinUI 3, см. в разделе Создание вашего первого проекта WinUI. Кроме того, если у вас есть проект, который не является WinUI, то см. Использовать Windows App SDK в существующем проекте.
Если у вас есть дополнительные потребности (например, настраиваемая обработка ошибок или загрузка определенной версии Windows App SDK), то вместо этого можно явно вызвать API начальной загрузки. В этом разделе демонстрируется такой подход. Дополнительно, см. Использование среды выполнения Windows App SDK для приложений, упакованных с внешним местоположением или распакованных.
В этом разделе показано явное использование API установщика из базового проекта консольного приложения; но эти шаги применимы к любому непакетированному настольному приложению, использующему Windows App SDK.
Перед выполнением этого руководства рекомендуется ознакомиться с архитектурой Runtime, чтобы узнать больше о зависимости пакета Framework, которое принимает ваше приложение при использовании Windows App SDK, а также о дополнительных компонентах, необходимых для работы в упакованном виде с внешним размещением или в распакованном виде.
Предварительные условия
- Установите инструменты для Windows App SDK.
- Убедитесь, что установлены все зависимости для приложений, упакованных с внешним расположением, и неупакованных приложений (см. руководство по развертыванию Windows App SDK для приложений, зависящих от платформы, упакованных с внешним расположением или неупакованных). Простой способ сделать это — запустить установщик среды выполнения Windows App SDK.
Инструкции
Вы можете следовать этому руководству с помощью C# или project C++.
Примечание.
Динамические зависимости и API-интерфейсы начального загрузчика завершаются сбоем, когда вызываются процессом с повышенными привилегиями. В результате Visual Studio не следует запускать с повышенными привилегиями. Дополнительные сведения см. в Динамические зависимости не поддерживают повышение привилегий #567.
Следуйте этим инструкциям, чтобы настроить WinUI проект на C#, который либо упакован с внешним местоположением, либо не упакован.
В Visual Studio создайте новый проект C# Console App. Назовите project DynamicDependenciesTest. После создания project у вас должно быть консольное приложение "Hello, World!" C#.
Затем настройте проект.
- В Solution Explorer щелкните правой кнопкой мыши project и выберите Edit Project File.
- Замените значение элемента TargetFramework на указатель платформы. Например, используйте следующую команду, если приложение предназначено для Windows 10 версии 2004.
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>- Сохраните и закройте файл project.
Измените платформу решения на x64. Значение по умолчанию в .NET project равно AnyCPU, но WinUI не поддерживает такую платформу.
- Выберите Build>Configuration Manager.
- Выберите раскрывающийся список в разделе "Активная платформа решения" и нажмите кнопку "Создать", чтобы открыть диалоговое окно "Новая платформа решения".
- В раскрывающемся списке в разделе "Тип" или выберите новую платформу, выберите x64.
- Нажмите кнопку "ОК ", чтобы закрыть диалоговое окно "Новая платформа решения".
- В Configuration Manager щелкните Close.
Установите пакет NuGet Windows App SDK в project.
- В Solution Explorer щелкните правой кнопкой мыши узел Dependencies и выберите Управление пакетами Nuget.
- В окне NuGet Package Manager выберите вкладку Browse и установите пакет Microsoft.WindowsAppSDK.
Теперь вы готовы использовать API Bootstrapper (см. Использование среды выполнения Windows App SDK для приложений, размещенных в сторонних местах или без упаковки), чтобы динамически создавать зависимость от пакета фреймворка Windows App SDK. Это позволяет использовать api Windows App SDK в приложении.
Откройте файл кода Program.cs и замените код по умолчанию следующим кодом, чтобы вызвать метод Bootstrap.Initialize для инициализации начального загрузчика. Этот код определяет, от какой версии Windows App SDK зависит приложение при инициализации начального загрузчика.
Внимание
Чтобы соответствовать определенной конфигурации, необходимо изменить приведенный ниже код. См. описание параметров метода Bootstrap.Initialize, чтобы указать одну из установленных версий Windows App SDK.
using System; using Microsoft.Windows.ApplicationModel.DynamicDependency; namespace DynamicDependenciesTest { class Program { static void Main(string[] args) { Bootstrap.Initialize(0x00010002); Console.WriteLine("Hello, World!"); // Release the DDLM and clean up. Bootstrap.Shutdown(); } } }API bootstrapper в основе — это собственный API C/C++, который позволяет использовать API Windows App SDK в вашем приложении. Но в приложении .NET, использующего Windows App SDK 1.0 или более поздней версии, можно использовать оболочку .NET для API начальной загрузки. Эта оболочка обеспечивает более простой способ вызова API загрузчика в приложении .NET, чем вызов собственных функций C/C++ напрямую. В предыдущем примере кода вызываются статические методы Initialize и Shutdown класса Bootstrap в оболочке .NET для интерфейса начальной загрузки.
Чтобы продемонстрировать правильность загрузки компонентов среды выполнения Windows App SDK, добавьте код, использующий класс ResourceManager в Windows App SDK для загрузки строкового ресурса.
Добавьте новый файл Resources File (RESW) в project (оставьте имя по умолчанию).
Открыв файл ресурсов в редакторе, создайте новый строковый ресурс со следующими свойствами.
- Имя: сообщение
- Значение: Hello, resources!
Сохраните файл ресурсов.
Откройте файл кода Program.cs и замените
Console.WriteLine("Hello, World!");строку следующим кодом.
// Create a resource manager using the resource index generated during build. var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager("DynamicDependenciesTest.pri"); // Look up a string in the .resw file using its name. Console.WriteLine(manager.MainResourceMap.GetValue("Resources/Message").ValueAsString);- Нажмите кнопку "Пуск без отладки " (или "Начать отладку"), чтобы создать и запустить приложение. Должно быть видно, что строка
Hello, resources!отображается успешно.
Если ваш проект WPF
Сведения о приложении Windows Presentation Foundation (WPF) см. в разделе Использование Windows App SDK в приложении WPF.
Связанные темы
Windows developer