Рабочая настройка (.NET 9)
С .NET 9 при таком подходе все работает нормально:
- Проект Blazor WebAssembly
- Методы C#, украшенные [JSInvokable]
- Создайте проект → получите папку /framework
- Скопируйте /framework в приложение Angular
- Вызовите C# из JavaScript, используя:
Код: Выделить всё
DotNet.invokeMethodAsync("MyAssembly", "MyMethod")
Проблема после обновления до .NET 10
После обновления проектов C# до .NET 10 вся установка нарушается.
Похоже, что внутренние процессы взаимодействия Blazor WebAssembly/JS значительно изменились и Я больше не могу вызывать методы C# из приложения Angular.
Что я пробовал
- (взаимодействие в стиле Blazor)
Код: Выделить всё
[JSInvokable]
Код: Выделить всё
DotNet.invokeMethodAsyncИнициализация среды выполнения кажется другой/отсутствует
2. [JSExport] (встроенное взаимодействие с WASM)
Я попробовал «новый» рекомендуемый подход:
Код: Выделить всё
dotnet publish -c Release -r browser-wasm
Код: Выделить всё
[JSExport]Но при вызове из Angular я получаю:
Код: Выделить всё
createDotNetRuntime is not defined
Текущий вывод
Похоже, что в .NET 10 Microsoft больше не поддерживает:
- Повторное использование выходных данных Blazor WebAssembly внутри сторонних сервисов Blazor приложения
- Вызов кода C# из JavaScript без полного внедрения новой модели среды выполнения.
- Переход на .NET 9 не является жизнеспособным долгосрочным решением.
Есть ли в .NET 10 поддерживаемый способ:
- Загрузить среду выполнения .NET WASM вручную?
- Вызов методов C# из JavaScript в приложении, отличном от Blazor?
- Есть ли замена DotNet.invokeMethodAsync?
- Любое официальное решение или обходное решение сообщества для использования .NET WASM как библиотека?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... r-works-js
Мобильная версия