Open2
C#/.NET クロスプラットフォーム対応
ピン留めされたアイテム
C#/.NETでクロスプラットフォーム対応
ライブラリ
- .NET Standard 2.0対応なら基本xplat
- ただし特定プラットフォーム固有機能呼び出しがある場合は注意
- .NET 5+で
-windows
とかあるのはダメ
UI
- Avalonia UI
- MAUI
- ただし、Linux/macOS(not Cataryst)非対応
- Uno Platform
- Blazor
XAML系UIプラットフォームの関係図
General
-
Microsoft.Maui.Essentials
- Avalonia公式でもすすめているMS公式ライブラリ(MAUI以外でも使える)
- ただし、Linux/macOS非対応
- reactiveui/splat: Makes things cross-platform
Sound & Graphics
-
Silk.NET - High-Speed & Advanced .NET Graphics & Compute
- providing bindings to popular low-level APIs such as OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX.
-
OpenTK
- low-level C# bindings for OpenGL, OpenGL ES, OpenAL, and OpenCL.
-
LibVLCSharp
- a cross-platform audio and video API for .NET platforms based on VideoLAN's LibVLC Library.
Graphics
-
SkiaSharp
- Skiaの.NET binding
- webp変換とかにも使える
-
HarfBuzzSharp
- HarfBuzzSharp is a cross-platform OpenType text shaping engine for .NET platforms.
Sound
-
OpenTK.Audio
-
CSCore
-
soxsharp
-
SharpAudio
-
luthfiampas/Bufdio: A cross platform audio playback library for .NET with PortAudio and FFmpeg
- portaudioとFFmpegで動くライブラリ
- Bufdio.Spice86もある
-
FFMpegの各種ラッパー
-
LibVLCSharp
- 実はオーディオ変換・再生に使える
-
SFML.Net - Simple and Fast Multimedia Library for .Net
- モバイル非対応
-
ar1st0crat/NWaves: .NET DSP library with a lot of audio processing functions
-
Audio Tools Library (ATL) for .NET
- easy-to-use library to read and write metadata from digital audio files and playlists
Other
-
TextCopy
- A cross platform package to copy text to the clipboard.
- TolikPylypchuk/SharpHook: SharpHook provides a cross-platform global keyboard and mouse hook, event simulation, and text entry simulation for .NET
- xoofx/zio: A cross-platform abstract/virtual filesystem framework with many built-ins filesystems for .NET
- alastairlundy/PlatformKit: Cross-platform OS and Platform Detection for .NET
- reactiveui/Akavache: An asynchronous, persistent key-value store created for writing desktop and mobile applications, based on SQLite3. Akavache is great for both storing important data as well as cached local data that expires.
他言語binding
-
Cysharp/csbindgen: Generate C# FFI from Rust for automatically brings native code and C native library to .NET and Unity.
- csbindgen - C#のためのネイティブコード呼び出し自動生成、或いはC#からのネイティブコード呼び出しの現代的手法について
- Rust binding
- xplatなRustライブラリがあればC#/.NETから呼び出せるようになる
ドキュメント
- Building Cross-Platform Applications (Avalonia)
TIPS
クロスプラットフォームで使わない方がいいこと
標準ライブラリ
-
System.Common.Drawing
- System.Drawing.Common が Windows でしかサポートされない
- 代わり→ ImageSharp(ライセンス注意)とかSkiaSharpとか
ライブラリ
- NAudio
- xplat対応が途中(分割してもWindows依存が残ってる)
- 代わり→ https://zenn.dev/link/comments/5073988a57344a