yotiky Tech Blog

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

.NET

C# - 管理者権限でコマンドプロンプトを実行する

Verb に RunAs を設定して、UseShellExecute を true にする。 Hidden が設定されている時に、WaitForExit で待機すると処理が終了しない可能性があるので注意。 public static class Cmd { public static void CreateSymbolicLink(string src, string dest)…

LINQPad - LINQPad 5 で使われる .NET Framework のバージョンを確認する

LINQPadはインストールされている最新 .NET Framework 4.xを対象としている。 以下のフォーラムで最新のバージョンが何であるか確認する linq ファイルが共有されている。 forum.linqpad.net 以下コードの抜粋。 void Main() { GetFWVersion().Dump(); } sta…

C# - シンボリックリンクを操作する(.NET 5以前)

TL;DR .NET 6 でDirectoryクラスにCreateSymbolikLinkメソッドが追加されたが、5以前では使えないため Win32API を使って操作する。 注意する点は実行に管理者権限が必要なため、Unity などから利用するのは難しいかもしれない。 .NET 6 以降は以下を参照。 …

Unity - Path を操作する

目次 目次 検証環境 Path を操作する Assetsからの相対パス、絶対パス Assets を含む相対パス 検証環境 LINQPad で代替 Path を操作する yotiky.hatenablog.com Assetsからの相対パス、絶対パス void Main() { //var baseDir = Application.dataPath; var ba…

C# - シンボリックリンクを操作する

TL;DR .NET 6 でDirectoryクラスにCreateSymbolikLinkメソッドが追加されたため、6以降ではバッチやProcessを使わなくても C# で直接シンボリックリンクを作成できるようになりました。 この記事はディレクトリを対象としていますが、ファイルを対象としたFi…

Unity - ZLoggerを導入する

目次 目次 検証環境 導入 実行 参考 検証環境 Unity 2022.3.21f1 ZLogger 2.4.1 ZLogger.Unity 2.4.1 CsprojModifier 1.2.1 github.com github.com 導入 NugetForUnityをインストール NugetForUnityで以下をインストール ZLogger Project Settings > Package…

Unity - R3 を使った Pure C# のModel層プロジェクトの作成

目次 目次 概要 環境 手順 サンプル実装 参考 概要 ピュアC# の.NETプロジェクトでModel層を作成する R3 を導入してRxをシームレスに利用する Unity プロジェクトはすでに存在するものとする 環境 Unity 2022.3.21f1 R3 1.1.11 手順 新しいクラスライブラリ…

ピックアップ記事

2024/4 ~ フリーランスのお仕事募集中 コラム yotiky.hatenablog.com 開発者としての3つの価値観「What-With-How」 ウォーターフォールとアジャイルの例え話 設計 yotiky.hatenablog.com Unity におけるアーキテクチャの予備知識 Unity - 設計・実装のコツ …

xUnit.net - 利用可能なツール

目次 目次 環境 xUnitTestCodeSnippets Chainning Assertion Xunit.SkippableFact XMLUnit 環境 Visual Studio 2022 xunit 2.4.2 xUnitTestCodeSnippets ショートカットテキストを入力して、Tabキーを2回入力するとコードのテンプレートが挿入される。 よく…

C# - XElement / XDocument の使い方

learn.microsoft.com learn.microsoft.com 目次 目次 検証環境 XElement の使い方 読み込み 保存 XDocument の使い方 XMLツリーの構築 検証環境 LINQPad 7 .NET 7.0 XElement の使い方 サンプルで扱う PurchaseOrder.xml。 <PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20"> <Address Type="Shipping"> <Name>Ellen Adams</name></address></purchaseorder>

C# - XmlSerializerの使い方

learn.microsoft.com 適用対象は、.NET Framework 1.1 以降。 目次 目次 検証環境 XmlSerializer の使い方 ファイルの読み書き 文字列の読み書き 属性 XmlRoot / XmlType XmlElement XmlAttribute XmlIgnore XmlEnum XmlText XmlArray / XmlArrayItem 子要素…

LINQPad - 便利機能

目次 目次 検証環境 パス Util Highlight / Highlightif Dif Snapshot HorizontalRun / VerticalRun Pivot Merge Image RawHtml WithStyle HtmlHead InvokeScript DisplayWebPage ToCsvString WriteCsv SyntaxColorText ReadLine AutoScrollResults SaveStri…

LINQPad - Dumpメソッドの拡張

定義 static class DumpExtensions { public static void DumpExH1(this string value) => DumpWrappedWithTags(value, "h1"); public static void DumpExH2(this string value) => DumpWrappedWithTags(value, "h2"); public static void DumpExH3(this str…

LINQPad - 拡張メソッド(My Extensions相当)をファイル分割して管理する

TL;DR My Extensionsファイルに拡張メソッドを実装するとどこからでも使える拡張メソッドを定義できる ファイルのコードが増えても、My Extensions ファイル以外では定義することができない そこで Plugins を利用して、ファイルを分割して拡張メソッドを管…

LINQPad - 出力結果を調整する

目次 目次 Dump description depth toDataGrid exclude / include alpha noTotals repeatHeadersAt includePrivate Util 参考 Dump サンプルデータ。 class Team { private Guid Id { get; set; } = Guid.NewGuid(); public string Name { get; set; } publi…

C# - 相対パスでオブジェクト参照を辿るツリー構造のサンプル

ツリー構造を成すクラスの親クラス。 public abstract class Node { protected const string Slash = "/"; [XmlIgnore] public Node Parent { get; set; } public Node GetReferencedNode(string referencePath) { var path = referencePath; var target = t…

C# - XmlWriter の使い方

learn.microsoft.com 適用対象は、.NET Framework 1.1 以降。 目次 目次 検証環境 XmlWriter の使い方 ファイルに書き込む string に書き込む 基本のキ 文字列をファイルに書き込む 参考 検証環境 LINQPad 7 .NET 7.0 XmlWriter の使い方 ファイルに書き込む…

C# - XmlReader の使い方

learn.microsoft.com 適用対象は、.NET Framework 1.1 以降。 目次 目次 検証環境 XmlReader の使い方 ファイルから読み込む 文字列から読み込む 検証環境 LINQPad 7 .NET 7.0 XmlReader の使い方 基本的な要素の取り扱い。 private void WriteConsole(XmlRe…

LINQPad - 外部ファイル(cs)を参照する

目次 目次 load ディレクティブ クエリを参照する 非参照 csファイルを参照する load ディレクティブ #load ディレクティブを使うと、外部のファイルを参照することができる。 主な利用用途は保存しておいた .linqファイルを参照することだが、.csファイルも…

C# - XMLを扱う

目次 目次 本文 .NETでXMLを扱うためのテクノロジー概要 構造(DOM) XMLの読み書き 操作 シリアライズ/デシリアライズ その他参考 本文 .NETでXMLを扱うためのテクノロジー概要 XML の処理オプション - .NET | Microsoft Learn XML ドキュメントと XML デー…

Unity Unit Test(単体テスト)入門 - 番外編 UniRx

目次 目次 はじめに シリーズの目次 環境 サンプル Moq NSubstitute はじめに この一連の記事は UnityのUnity Test Frameworkを使ったテストに関して調べたメモ書きに補足を足したもの Unityのテスト、およびDIコンテナ、モックライブラリの基本的な使い方や…

Unity Unit Test(単体テスト)入門 - NSubstitute

目次 目次 はじめに シリーズの目次 環境 NSubstitute 手順 基本的な使い方 サンプル アプリ側 with Extenject(Zenject) with VContainer 参考 はじめに この一連の記事は UnityのUnity Test Frameworkを使ったテストに関して調べたメモ書きに補足を足したも…

Unity Unit Test(単体テスト)入門 - Moq

目次 目次 はじめに シリーズの目次 環境 Moq 手順 基本的な使い方 サンプル アプリ側 with Extenject(Zenject) with VContainer 参考 はじめに この一連の記事は UnityのUnity Test Frameworkを使ったテストに関して調べたメモ書きに補足を足したもの Unity…

Unity Unit Test(単体テスト)入門 - VContainer

目次 目次 はじめに シリーズの目次 環境 VContainer 手順 テストでの使い方 サンプル アプリ側 テストコード 参考 はじめに この一連の記事は UnityのUnity Test Frameworkを使ったテストに関して調べたメモ書きに補足を足したもの Unityのテスト、およびDI…

Unity Unit Test(単体テスト)入門 - Extenject(Zenject)

目次 目次 はじめに シリーズの目次 環境 Extenject(Zenject) 手順 テストでの使い方 サンプル アプリ側 テストコード UnitTest IntegrationTest SceneTest 参考 はじめに この一連の記事は UnityのUnity Test Frameworkを使ったテストに関して調べたメモ書…

Unity Unit Test(単体テスト)入門 - Unity Test Framework

目次 目次 はじめに シリーズの目次 環境 Unity Test Framework 手順 参考 補足 MEMO 参考 はじめに この一連の記事は UnityのUnity Test Frameworkを使ったテストに関して調べたメモ書きに補足を足したもの Unityのテスト、およびDIコンテナ、モックライブ…

Unity Unit Test(単体テスト)入門

目次 目次 はじめに シリーズの目次 環境 単体テスト入門 基本方針 Unity Test Framework 手順 参考 DIコンテナの導入 DIコンテナは インタフェースは Extenject(Zenject) VContainer 比較の参考 モックライブラリ導入 Moq NSubstitute サンプルプロジェクト…

MagicOnion ジェネレーターのエディタ拡張の修正覚書

Unity+.NET Core+MagicOnion v2 の環境構築ハンズオン #C# - Qiita MenuItemのエディタ拡張使わせてもらっていたがエラーが起きてるのしばらく気付かなかったので、p.Exitedの中を微修正。 if (p.ExitCode == 0) UnityEngine.Debug.Log($"{data}"); else Uni…

MagicOnion で Shared Project (共有プロジェクト)を含むプロジェクトをジェネレートする時の注意点

もくじ もくじ 現象 原因 対処 現象 複数のプロジェクトにジェネレート対象のクラスを定義しているが、1度のmocで対象にしたいプロジェクトが1個だけの場合、入力するプロジェクトがShared Projectを参照していると参照していないプロジェクトのコードもジェ…

共有プロジェクト(Shared Project)自体の参照設定

共有プロジェクトの中でライブラリを参照してコードを書きたい場合、通常のプロジェクトならNugetで参照を追加するが共有プロジェクト自体に参照を追加することはできない。 どうするかというと、共有プロジェクトを参照する側のプロジェクトの参照内容が反…