Как создать приложение MAUI для запуска в Windows

#.net #windows #maui

Вопрос:

Я использую MSVS 2022 preview 3.1 в Windows 10 с .NET 6.0.100-preview.7.21379.14, и я могу создать приложение MAUI и развернуть его в эмуляторе Android.

Я бы хотел запустить его вместо этого в своей Windows, потому что эмулятор Android очень медленный, и в любом случае меня больше интересует рабочий стол. Возможно ли это в настоящее время? Я пытался создать проект WinUI, он создает исполняемый файл на диске, но при запуске исполняемого файла ничего не происходит.

Я попытался использовать Публикацию в папку с тем же результатом. Я попытался использовать Deploy, снова с тем же результатом. В любом процессе нет ошибок, просто исполняемый файл, созданный на диске, вообще ничего не делает.

Приложение было создано с помощью dotnet new maui -n HelloMauiPreview команды.

Редактировать: я поместил запись в objReleasenet6.0-windows10.0.19041win10-x64PlatformsWindowsApp.g.i.cs файл Main , который выглядит так:

         static void Main(string[] args)
        {
            global::WinRT.ComWrappersSupport.InitializeComWrappers();
            global::Microsoft.UI.Xaml.Application.Start((p) => {
            ...
 

Первая строка была выполнена без проблем, и программа застревает где-то внутри второй строки. Существует делегат, который НЕ вызывается. Таким образом, он застревает где-то между началом Start и вызовом этого делегата. Больше ничего не выполняется, поэтому строки ЗА global::Microsoft.UI.Xaml.Application.Start строкой не выполняются.

Кроме того, когда я сказал «застрял», это не значит, что приложение будет висеть там, оно каким-то образом завершается. Используя средство просмотра событий, я обнаружил следующее событие:

 Description: The process was terminated due to an unhandled exception.
Exception Info: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.Runtime.InteropServices.COMException (0x80040154): Class not registered (0x80040154 (REGDB_E_CLASSNOTREG))
   at WinRT.BaseActivationFactory..ctor(String typeNamespace, String typeFullName) in Microsoft.WinUI.dll:token 0x6000023 0x6e
   at Microsoft.UI.Xaml.Application._IApplicationStatics..ctor() in Microsoft.WinUI.dll:token 0x601388f 0x1c
   at System.RuntimeType.CreateInstanceOfT() in System.Private.CoreLib.dll:token 0x60006c8 0x3e
   --- End of inner exception stack trace ---
   at System.RuntimeType.CreateInstanceOfT() in System.Private.CoreLib.dll:token 0x60006c8 0x4e
   at System.Activator.CreateInstance[T]() in System.Private.CoreLib.dll:token 0x60009ed 0x0
   at WinRT.WeakLazy`1.get_Value() in Microsoft.WinUI.dll:token 0x6000019 0x20
   at Microsoft.UI.Xaml.Application._IApplicationStatics.get_Instance() in Microsoft.WinUI.dll:token 0x6013890 0x0
   at Microsoft.UI.Xaml.Application.Start(ApplicationInitializationCallback callback) in Microsoft.WinUI.dll:token 0x6009288 0x0
 

Изменить 2:
Проблема, по-видимому, аналогична/аналогична https://github.com/dotnet/maui/issues/1557

Ответ №1:

Вы должны установить WindowsMachine цель и надлежащую структуру. Затем запустите F5 и включите Install from unknown sources или аналогичное в приложении «Настройки» Windows, для меня оно выскочило автоматически (я на Win11).

МАУИ для Windows

Затем вы запускаете приложение с помощью инструментов отладки: Приложение MAUI Hello World

Комментарии:

1. Я приму ваш ответ. Это больше не было проблемой с новыми предварительными просмотром. Это только начало работать. Раньше не было опции WindowsMachine, теперь она есть и работает нормально, так что то, что вы говорите, верно для новых предварительных просмотров, и теперь все хорошо. Все равно спасибо!