yotiky Tech Blog

とあるエンジニアの備忘録

.NET Core

C# 8.0 の主な新機能

目次 目次 リリース時期 null 許容参照型 機能 有効化/無効化 csproj ファイルにオプションを指定する #nullable enable|disable|restore [warnings|annotations] ! (null 免除) 演算子 フィールドやプロパティでの利用 null 許容値型との違い 建設中 コード…

C# の新機能

目次 C# 4.0 C# 5.0 C# 6.0 C# 7.0 C# 7.1 C# 7.2 C# 7.3 C# 8.0 C# 9.0 Unity の対応表 Unity Runtime version (Equivalent) C# version Compiler 2017 .NET 3.5 C# 4.0 mcs (Mono) .NET 4.6 C# 6.0 mcs (Mono) 2018.1 / 2018.2 .NET 3.5 C# 4.0 mcs (Mono)…

C# 9.0 の主な新機能

目次 目次 リリース時期 init 専用セッター Records トップ レベル ステートメント ターゲットからの new 型推論 ラムダ式の引数を破棄 ローカル関数への属性適用 パターンマッチングの拡張機能 コード置き場 リリース時期 .NET 5 init 専用セッター public …

WPF から Application Insights に Telemetry を送信する

目次 目次 Application Insights 非HTTPアプリケーション向け 検証環境 手順 パッケージのインストール 実装 実行結果 Application Insights Application Insights は Azure Monitor の機能であり、開発者や DevOps プロフェッショナル向けの拡張可能なアプ…

WPF - DesignerProperties

DesignerProperties はデザインモードか判定に使われるクラスですが、手元の環境で上手く機能しなくなっていたので簡単に調査した結果です。 目次 目次 検証環境 内容 使い方 動作確認 WPF (.NET Framework) WPF (.NET Core) 検証環境 Visual Studio 2019 (1…

WPF - CommandLocker

Button にバインディングしたコマンドを共通してロックする機構 CommandLocker。 github.com ロックの種類は、Guidをキーとしたシンプルなロックと、ロックする時に渡した値をアンロックする際にも渡す必要があるトリガーロックの2種類です。 トリガーロック…

C# - 固定サイズのキュー

ラッパークラス 最小限の実装。Queue がラップされるので Queue で必要な機能は全部中継する必要がある。 public class FixedSizeQueue<T> { private ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); private object lockObject = new Object(); public int Si</t></t></t>…

HoloLens2 に FastEnum を導入する

追記 (2020/11/14) 検証環境 補足 導入 FastEnum MessagePack 追記 (2020/11/14) FastEnum 1.6.0 がリリースされました。 1.5.x では System.Runtime.CompilerServices.Unsafe は 4.7.1 以上が必要でしたが、1.6.0 では 4.5.0 以上になっており、要求される…

Unity Editor の MessagePack CodeGen が動かない原因と一時対処

原因 一時対処 参考 原因 最新の MessagePack for C# (執筆時のバージョンは 2.2.60 ) の MessagePack CodeGen ウィンドウでは、ジェネレートが動かなくなっています。中でdotnet tool コマンドを使っていますが、.NET Core ツールについては前回の記事を…

.NET Core ツール

.NET Core ツール インストール グローバルツール ローカルツール ツールを使用する コマンドを確認する グローバルツールを呼び出す ローカルツールを呼び出す プレフィックス dotnet- 参考 .NET Core ツール dotnet コマンドで、tool SDK コマンドを使うと…

HoloLens2 で MagicOnion v3 を動かす

目次 目次 構築環境 補足 Unity のベース構築 gRPC のコード修正・ビルド Grpc.Core.dll grpc_csharp_ext.dll grpc_csharp_ext_dummy_stubs.c 動作確認 構築環境 MagicOnion.Client.Unity.unitypackage 3.0.12 MessagePack 2.2.60 MagicOnion.Hosting 3.0.13…

HoloLens2 で入力方法として QRコード を使う

前回「HoloLens2 でQRコードのスキャンを実装する」では、QRコードスキャンの実装方法を紹介しました。 QRコードのスキャンが使えると、QRコードを介してアプリに文字列を流し込めるようになります。 試しに、入力フィールドの横にQRコードを読み込むボタン…

WPF - MahApps の覚書

目次 目次 前提 WindowCommands ListBox HamburgerMenu 参考 ボタンとして使用する ToolTipを表示する 前提 MahApps.Metro MahApps.Metro.IconPacks App.xaml でリソースを読み込む。 <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> </resourcedictionary.mergeddictionaries></resourcedictionary></application.resources>

ZXing を使ってQRコードを動的に生成して表示する

ZXing は "zebra crossing" の略らしく、ゼブラクロッシングと読むのが正解っぽい。 検証環境 導入 実装 パラメータ 実行 検証環境 WPF .NET Core 3.0 ZXing.NET 0.16.6 導入 nuget で ZXing.NET をインストールします。 System.Drawing.Common も使うので入…

WPF - FluentWPF の使い方

Fluent Design System に関しては次のページの通り。 docs.microsoft.com FluentWPF の基本的な使い方はREADMEにあります。 github.com 作者のブログも少し古めですが参考になります。 sourcechord.hatenablog.com ただし、現状 MahApps.Metro との併用は Me…

WPF - XAML ほかの覚書

目次 目次 リソースを使う 外部リソースを定義する プリミティブ型の利用 Grid の RowDefinitions / ColumnDefinitions の長さを定義する スタイル 使い方 継承 一般 RelativeSource Parameter などに struct を渡す ショートカットキー Loadedイベントでコ…

.NET - 子プロセスを確実に終了させる

実装例 こちらやここのコメント欄などが参考になりそうです。今回はQiitaの記事のコードを使わせて頂きました。 public class JobObject : IDisposable { public static JobObject CreateAsKillOnJobClose() { var job = new JobObject(); var jobInfo = new…

.NET - Ipc を使ったプロセス間通信

Windows オペレーティング システムのプロセス間通信 (IPC) を使う場合、System.Runtime.Remoting.Channels.Ipc 名前空間 を利用します。 ただし、適用対象が .NET Framework のみ (現在 2.0~4.8) であり、.NET Core や Unity などでは使えないため、参考リ…

.NET - NamedPipe(名前付きパイプ)を使ったプロセス間通信

今回は名前付きパイプの実装例です。 サンプルは1つ目の Console アプリで入力した文字列を、2つ目の Console アプリ、WPF アプリ、Unity でそれぞれ読み取って表示するものになります。 パイプはサーバー側で同じパイプ名を共有するサーバーインスタンスの…

.NET - MemoryMappedFile を使ったプロセス間通信 (MessagePack for C# 編)

前回の記事で MemoryMappedFile を使ったプロセス間通信の基本的な使い方を紹介しました。今回は MessagePack for C# を使ってシリアライズしたデータのやり取りについてです。 MessagePack for C# の使い方についてはこちらの記事も参考にしてみてください…

.NET - MemoryMappedFile を使ったプロセス間通信

別々のプロセスで起動したアプリケーションやライブラリで相互に通信する方法のサンプルコードです。今回は共有メモリ、MemoryMappedFile を使います。 .NET Framework 4.0 以降に導入された技術のようです。 今回のサンプルは1つ目の Console アプリで入力…

.gitignore ファイル のテンプレートを取得する

.gitignore ファイル のテンプレートを取得する方法を3つ紹介します。 1つは .NET 専用ですが。 github gibo dotnet github github Webページでリポジトリを作成する際にテンプレートから選択して追加することができます。こちらはリポジトリのルートのみに…

Azure Functions プロジェクトの .gitignore ファイル

github.com

Unity (HoloLens) - Json シリアライザの基本的な使い方

Unity (HoloLens) で Json をパースするライブラリのサンプルコード集です。 目次 目次 概要 対象クラス 開発環境 導入 JsonUtility Json.NET (Newtonsoft.Json) Utf8Json サンプル JsonUtility Json.NET (Newtonsoft.Json) Utf8Json デプロイ Utf8Json OnPr…

Unity (HoloLens) - Httpクライアント の基本的な使い方

Unity (HoloLens) で通信するために使用できる Httpクライアントのサンプルコード集です。 GETとPOSTそれぞれで、コルーチン、UniRx、async/await(TaskとUniTask)などを織り交ぜながら例を書いています。 目次 目次 TL;DR 概要 対象クラス 開発環境 サンプ…

HttpRequest のQueryとBodyから値を取得する拡張メソッド

Azure Functions でクラスを追加するとテンプレートについてくる例のやつをやるのが面倒になったのでサンプルコード置いておきます。 パフォーマンス無視したコードになるので利用する際は自己責任で。 あとDynamicJson使ってるので適宜。 github.com before…

Azure Functions を Visual Studio で発行する際に発生したエラーの解決方法

環境 Windows 10 Visual Studio 2019 問題1 Visual Studio で発行を実行すると以下のエラーが出て失敗する。(エラー内容はうろ覚え) 'Error generating extension metadata: System.IO.DirectoryNotFoundException: The path '[...]\bin\Debug\netcoreapp2…

Azure Spatial Anchors と HoloLens 単体で利用した話

Azure Spatial Anchors については、こちらの記事が非常に詳細にまとめられている。 qiita.com 全体を一度読むことをおすすめするが、Azure Spatial Anchorsの概要だけであれば「空間アンカー(Spatial Anchors)は何ができるのか?」と「物理空間とアンカー…

インストールされている .NET Core SDK を確認する

バージョンを確認する コマンドプロンプトもしくはPowerShellを起動して、dotnet --list-sdksと実行します。 C:\>dotnet --list-sdks 1.0.3 [C:\Program Files\dotnet\sdk] 2.1.202 [C:\Program Files\dotnet\sdk] 2.1.500 [C:\Program Files\dotnet\sdk] PS…