窓を作っては壊していた人のブログ

この謎のブログタイトルの由来を知るものはもういないだろう

メモ: Client Side Blazorに私が求めているものとそれに関係しそうなリポジトリとIssue

Client-Side BlazorはWebAssemblyでC# のコードを実行しています。 ということは、依存しているC# のコードをILに落とし込んで、みたいなことが出来ないと実行できなそうですよね?

で、実際C# ライブラリがNative Libraryに依存しているとビルドに失敗することが知られています。

Blazor build fails with unhelpful error when there are native dependencies · Issue #8158 · aspnet/AspNetCore · GitHub

これは厳しい。

私が求めていることは、

 .
├── linux
│  └── libawesome.so
├── osx
│  └── libawesome.dylib
├── win-x64
│  └── libawesome.dll
└── wasm(とかbrowser?) <- こいつを追加
   └──  libawesome.wasm

みたいな感じでNuget Packageを作ってBlazorを使ったプロジェクトで参照しているとClient-Sideで libawesome のライブラリを使える状態。

似たようなことを考えている人がいるようで、

Implement support for pinvoke for wasm target. · Issue #8007 · mono/mono · GitHub

わかるーという………

これが出来ると割とハッピーなんですけど、AspNetCoreのリポジトリのIssueを探してもそれっぽいことが見つからないんですよね。 この辺こんなIssueで議論されているみたいなことを知っている方がいれば教えてほしいです。

以上メモ


関連しているリポジトリをちょろっと載せておこう(いつか触ってみる)

GitHub - JeremyLikness/blazor-wasm: Blazor and WebAssembly examples (part of a Blazor presentation)

GitHub - RyanLamansky/dotnet-webassembly: Create, read, modify, write and execute WebAssembly (WASM) files from .NET-based applications.