Содержание
К сожалению, при использовании .NET MAUI Blazor Hybrid встречаются проблемы и ошибки от которых, к сожалению, не застрахован ни один программный продукт. Одна из наиболее «бесячих» ошибок, которые могут вам встретиться — это ошибка с кодом XALNS7019 и сообщением System.UnauthorizedAccessException Access to the path .dll is denied. После этой ошибки приходится либо перезапускать Visual Studio, либо собирать приложение под другую платформу. Разберемся как можно избавиться от этой ошибки в Visual Studio.
Лично у меня ошибка XALNS7019 воспроизводилась даже в Visual Studio 17.12.4 (самое последнее обновление на данный момент) с .NET 9.
Как воспроизвести ошибку XALNS7019
Для воспроизведения ошибки мне потребовалось выполнить следующие действия:
- Создать новое приложение Blazor Hybrid и запустить отладку приложения в Windows. Остановить откладку
- Запустить приложение на устройстве Android. Остановить приложение
- Снова попытаться запустить приложение в Android. Profit! При попытке второй раз запустить приложение в Android в Visual Studio появляется ошибка XALNS7019 и большим текстом первая строка которого выглядит следующим образом: «System.UnauthorizedAccessException: Access to the path ‘[путь_к_проекту]\[имя_проекта].dll’ is denied«
Временные решения проблемы с ошибкой XALNS7019
Для того, чтобы избавиться от этой ошибки приходилось повторять 1 и 2 шаг алгоритма выше, то есть переключаться на отладку в Windows, собирать приложение, потом снова переключаться в Android и после этого приложение запускалось.
Второй вариант решения проблемы — «убить» процесс msbuild.exe через командную строку, выполнив команду taskkill /IM "msbuild.exe" /F
Понятно, что каждый раз убивать msbuild.exe или пересобирать приложение — лишняя трата времени и раздражение. Поэтому представленные варианты — решения временные.
Как избавиться от ошибки XALNS7019 в Visual Studio 17.12.4
Чтобы избавиться от ошибки XALNS7019 Access to the path .dll is denied необходимо обновить рабочие нагрузки Visual Studio до самых последних версий. Для этого переходим в Visual Studio в PowerShell для разработчиков и выполняем команду:
dotnet workload update
После этого начнется процесс (достаточно продолжительный) по обновлению рабочих нагрузок в конце которого вы увидите сообщение: «Рабочие нагрузки успешно обновлены: android aspire ios maccatalyst maui-windows»
Теперь необходимо обязательно перезапустить Visual Studio. После этого ошибка XALNS7019 Access to the path .dll is denied исчезла.
На всякий случай, приведу сведения о моей Visual Studio в которой приложения Blazor Hybrid не выдают ошибок XALNS7019:
Microsoft Visual Studio Community 2022 Версия 17.12.4 VisualStudio.17.Release/17.12.4+35707.178 Microsoft .NET Framework Версия 4.8.09037 Установленная версия: Community ASP.NET and Web Tools 17.12.178.10385 Azure Functions and Web Jobs Tools 17.12.178.10385 Common Azure Tools 1.10 Extensibility Message Bus 1.4.42 (main@840f8b3) azor (ASP.NET Core) 17.12.3.2457601+b5256abf658352440e61aa1372bbc0798e9ceb7d Xamarin 17.12.0.153 (d17-12@1d0906d) Xamarin Designer 17.12.3.17 (remotes/origin/main@0912a005b9) Xamarin.Android SDK 13.2.2.0 (d17-5/45b0e14) Xamarin.Android Reference Assemblies and MSBuild support. Java.Interop: xamarin/java.interop/d17-5@149d70fe SQLite: xamarin/sqlite/3.40.1@68c69d8 Xamarin.Android Tools: xamarin/xamarin-android-tools/d17-5@ca1552d