Сокращение площади .NET, скомпилированного в Wasm - PullRequest
6 голосов
/ 02 июня 2019

Я использую Mono для компиляции C # в Wasm, чтобы использовать его в браузере.Выполнение следующих команд вызывает кучу DLL, файл wasm и некоторые файлы JS.

csc /target:library -out:regex101.dll \
    /noconfig /nostdlib \
    \
    /r:$WASM_SDK/wasm-bcl/wasm/mscorlib.dll \
    /r:$WASM_SDK/wasm-bcl/wasm/System.dll \
    /r:$WASM_SDK/wasm-bcl/wasm/Facades/netstandard.dll \
    /r:$WASM_SDK/framework/WebAssembly.Bindings.dll \
    \
    regex101.cs

mono $WASM_SDK/packager.exe \
    --copy=always --out=./publish \
    regex101.dll

Если я включу эти результирующие js-файлы в веб-страницу, я смогу нормально запустить переносимый код в браузере.Тем не менее, итоговый размер (около 23 dll + JS + Wasm) в общей сложности составляет около 15 МБ, что очень много, и я считаю, что это происходит потому, что не выполняется удаление мертвого кода, и в него включаются большие куски фреймворка.

Мне порекомендовали запустить компоновщик (см. https://github.com/firasdib/Regex101/issues/156#issuecomment-497281517), чтобы выполнить удаление мертвого кода, но, будучи новичком .NET, я не знаю, как это сделать.

Любая помощь будет высоко ценится.

...