Вот что я нашел.
Получить Mono WASM
Давайте назовем распакованную папку WASM-SDK
.
Примечание : вы можете пропустить следующие шаги, если вы запустите packager.exe
, как описано в Mono docs, но я хочу описать здесь ручной подход для лучшего понимания.
Подготовка .NET dlls
Поместите следующие dll в корневой каталог вашего сайта (скажем, в папку managed
):
- Основная dll, содержащая
class C
, назовем ее app.dll
- Зависимости BCL, в этом случае вам нужно только:
WASM-SDK\wasm-bcl\wasm\mscorlib.dll
WASM-SDK\wasm-bcl\wasm\Facades\netstandard.dll
WASM-SDK\framework\WebAssembly.Bindings.dll
Подготовка веб-файлов
- Копирование
mono.js
и mono.wasm
из WASM-SDK\release
в корневой каталог вашего сайта - Зарегистрируйте
Module
и импортируйте mono.js
:
<script>
window.Module = {};
window.Module.onRuntimeInitialized = () => {
const config = {
vfsPrefix: "managed",
deployPrefix: "managed",
enableDebugging: 0
};
const assemblies = [
'app.dll',
'mscorlib.dll',
'WebAssembly.Bindings.dll',
'netstandard.dll'
];
MONO.mono_load_runtime_and_bcl(
config.vfsPrefix,
config.deployPrefix,
config.enableDebugging,
assemblies,
() => {
Module.mono_bindings_init("[WebAssembly.Bindings]WebAssembly.Runtime");
const add = Module.mono_bind_static_method("[app] C:Add");
// ⬇️ This is what calls C.Add():
console.log('C.Add:', add(1, 2));
}
)
};
<script>
<script async src="mono.js"></script>
Если вы используете IIS, убедитесь, что для расширения
.wasm
есть регистр MIME-типа
application/wasm
.
Все сделано
Теперь, когда вы открываете свой HTML, выдолжен увидеть C.Add: 3
зарегистрировано в консоли браузера.