我正在使用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新手,我不知道该怎么做。
任何帮助将不胜感激。