如何使WasmEmitSymbolMap和/或WasmNativeStrip属性生效



我希望能够为我的Blazor WebAssembly应用程序解释Edge性能分析器报告。为了做到这一点,我需要避免这个问题中描述的问题,即所有函数都被重命名为"之类的名称;wasm函数[12345]";。此答案旨在通过设置属性WasmEmitSymbolMap和/或WasmNativeStrip来解释实现此目的的方法。然而,它并没有提供足够的细节来说明如何使这些属性真正生效。对我来说,它们没有任何区别。Edge性能分析器继续根据";wasm函数[12345]";模式,无论我尝试什么,我都找不到文件";dotnet.js.symbols"-应该在某个地方创建,因为我指定了WasmEmitSymbolMap。

我尝试过的

  1. 我尝试在";客户端";项目的csproj文件:

    <WasmEmitSymbolMap>true</WasmEmitSymbolMap>

    <WasmNativeStrip>false</WasmNativeStrip>

  2. 我尝试在";服务器";项目的csproj文件,因为答案并没有说明它们属于哪个文件。

  3. 因为答案警告说;只能在AOT编译模式下使用";,在两个csproj文件中,我在前面提到的行旁边添加了以下行:

    <RunAOTCompilation>true</RunAOTCompilation>

  4. 我还尝试在两个文件中添加以下行:

    <RunAOTCompilationAfterBuild>true</RunAOTCompilationAfterBuild>

  5. 在不同的时候,我尝试强制刷新(shift+F5(我的应用程序中的页面,以防某些内容过期。

步骤1、2、3或5均无差异。至于步骤4,我不知道这个更改是否会解决问题,因为它使构建花费了很长时间,以至于我最终放弃并取消了它

答案是我本应该对RunAOTCompilationAfterBuild更有耐心。它确实能完成任务。奇怪的是,我第二次尝试它时,没有花那么长时间,而且似乎没有像第一次那样完成所有的步骤,所以一定有一些东西被缓存了。尽管在此期间我已经清洗了溶液。

所以答案是:把所有这些东西都放在你的csproj中(我认为是客户端项目csproj,但如果两者都在也没关系(:

<PropertyGroup>
...
<RunAOTCompilation>true</RunAOTCompilation>
<RunAOTCompilationAfterBuild>true</RunAOTCompilationAfterBuild>
<WasmEmitSymbolMap>true</WasmEmitSymbolMap>
<WasmNativeStrip>false</WasmNativeStrip>
...
</PropertyGroup>

并且要意识到编译需要很长时间。大约10-15分钟或更长时间,在这段时间里,它会坐在那里不打印任何输出——它只是坐在那里几分钟,并附上一条消息,其中提到了一种名为";emscripten";。

因为编译需要很长时间,所以您不希望在调试构建中经常这样做。只有当您特别想调查性能问题时。

此处的其他相关讨论:https://github.com/dotnet/aspnetcore/issues/26850

相关内容

  • 没有找到相关文章

最新更新