#.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).
Затем вы запускаете приложение с помощью инструментов отладки:
Комментарии:
1. Я приму ваш ответ. Это больше не было проблемой с новыми предварительными просмотром. Это только начало работать. Раньше не было опции WindowsMachine, теперь она есть и работает нормально, так что то, что вы говорите, верно для новых предварительных просмотров, и теперь все хорошо. Все равно спасибо!