Этот пост переведён автоматически. Чтобы прочитать оригинал, нажмите здесь.
Если вы когда-нибудь пробовали создавать Windows-приложение в VS Code, вы знаете этот момент. Вы работаете в потоке, редактируете код в любимом редакторе — и вдруг нужен идентификатор пакета для Windows API. Или надо создать MSIX. Или подписать пакет. И вот уже открываешь Visual Studio или в 23 часа ищешь в Google «msix packaging without visual studio».
Этого трения больше нет. Расширение WinApp для VS Code вышло в публичный превью — и это полный CLI разработки Windows-приложений, интегрированный непосредственно в VS Code. Никакой отдельной установки, никакого Visual Studio.
Идентификатор пакета по F5
Проблема с Windows API — уведомления, фоновые задачи, функции ИИ на устройстве, share targets — многие из них требуют, чтобы приложение имело идентификатор пакета. Без него эти API просто не работают.
Традиционно получение идентификатора пакета означало сборку полного MSIX-установщика или запуск из Visual Studio. Расширение WinApp полностью меняет это с помощью пользовательского типа отладки winapp.
Добавьте это в ваш launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "winapp",
"request": "launch",
"name": "WinApp: Launch and Attach"
}
]
}
Нажмите F5. Расширение находит выходные данные сборки и манифест, присваивает приложению идентификатор пакета через winapp run и подключает отладчик. Для .NET-приложений это coreclr (требуется C# Dev Kit). C/C++ использует cppvsdbg. Node/Electron использует встроенный отладчик.
Можно настроить preLaunchTask, чтобы проект автоматически собирался перед каждым нажатием F5 — тот же процесс сборки и запуска, что в Visual Studio, только в VS Code.
Всё в палитре команд
Откройте Ctrl+Shift+P, введите WinApp — и получите полный набор инструментов:
- Initialize Project — настройка проекта с Windows SDK и/или Windows App SDK
- Run Application — запуск как упакованного приложения с идентификатором пакета
- Create MSIX Package — упаковка приложения с параметрами сертификата и среды выполнения
- Update Manifest Assets — автоматическая генерация всех необходимых иконок из одного исходного изображения
- Generate / Install Certificate — управление сертификатами разработки
- Sign Package — подпись MSIX или исполняемого файла
- Run SDK Tool — запуск
makeappx,signtool,mtилиmakepriнапрямую
Устанавливать CLI WinApp тоже не нужно. Он входит в комплект расширения.
Работает с Несколькими Фреймворками
Это не только инструмент для .NET WPF/WinUI. Расширение работает с:
- .NET: WPF, WinForms, Console, WinUI 3
- C/C++: Win32, CMake, MSBuild
- Electron / Node.js
- Rust
- Tauri
- Flutter
Такой охват намеренный. VS Code — это место, где живут веб- и кроссплатформенные разработчики. Если вы создаёте приложение Tauri или Electron, которому нужна Windows-упаковка, расширение поможет вам без необходимости переходить на Visual Studio.
Почему Это Важно для .NET-разработчиков
Я много работаю в VS Code — там пишу Markdown, управляю конфигурациями, редактирую небольшие проекты и запускаю терминалы. Но для разработки .NET Windows-десктопных приложений Visual Studio был единственным реальным вариантом, как только требовалось что-то связанное с упаковкой.
Это расширение закрывает данный пробел. Теперь можно иметь полный цикл разработки .NET Windows-десктопных приложений — редактирование, сборка, запуск с идентификатором пакета, отладка, упаковка, подпись — не выходя из VS Code. Это реальное улучшение качества работы.
Начало Работы
code --install-extension Microsoft-WinAppCLI.winapp
Или найдите WinApp в представлении расширений (Ctrl+Shift+X).
Требования:
- Windows 10 и выше
- VS Code 1.109.0 и выше
- Расширение отладчика для языка вашего приложения
Читайте полное объявление Chiara Mooney для получения подробностей.
Заключение
Расширение WinApp для VS Code — долгожданное дополнение для .NET Windows-десктопных разработчиков, которые работают в VS Code, но были вынуждены переключаться на Visual Studio для задач упаковки. Идентификатор пакета по F5, упаковка MSIX из палитры команд, встроенное управление сертификатами — это правильный набор функций.
Попробуйте на следующем проекте WPF или WinUI. Трение, которое вы обходили, теперь значительно уменьшилось.
