减少编译为Wasm的.NET的占用空间

时间:2019-06-02 13:54:08

标签: c# .net mono webassembly

我正在使用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个dlls + JS + Wasm)总共约为15mb,这非常大,我相信这是因为没有运行消除死代码的情况,并且包含了框架的很大一部分。

建议我运行一个链接器(请参阅https://github.com/firasdib/Regex101/issues/156#issuecomment-497281517)以消除无效代码,但作为我的.NET新手,我不知道该怎么做。

任何帮助将不胜感激。

0 个答案:

没有答案