何もわからない。もっと良い方法知りたい... 前の記事と類似のネタです。 題材 同じ型の要素が2個のVector構造体を定義します[1]。new Vector2<int>(1, 2) とか new Vector2<double>(3.4, 5.6) のような使い方です。 using System.Numerics; public record struct Vec2<T>(T Item0, T Item1) where T : unmanaged, INumber<T>;
15年以上P/Invokeに向き合っていますが分からないことは尽きません。雑なメモなので不正確ならすみません。おいおい書き足していくかもしれません。 環境 .NET 7 LibraryImport の話を加味しています。ただし.NET 7特有の話は一部です。 1. 解放処理だけはSafeHandleを使わない C++側定義の例 ここではVC++向け仕様としています(__declspecのところ)が、この点は本題とは無関係です。 // ラップしたいクラス class Foo { ... }; extern "C" { __declspec(dllexport) Foo* __cdecl createFoo() { return new Foo; } __declspec(dllexport) void __cdecl releaseFoo(Foo* obj) { delete obj; }
GitHub Actions Advent Calendar 2022 5日目の記事です。 コードカバレッジ、すなわちコードについてどの程度テストされているかを、pull requestのたびに自動的に求めるGitHub Actionsを作ります。 サードパーティーアクションで簡単に実現する方法と、独力で実装する2通りの方法を紹介します。 pull requestにBotからのコメントがこのように出てくるのが完成イメージです。 pull requestにおけるコードカバレッジのBotコメントの例 環境 .NET 6 .NET Core系列ならバージョン問わず可能なはずです。 .NET Frameworkだとうまく動かないかもしれません。 例題プロジェクト 円の面積を求める簡単なクラスライブラリを例題とします。 namespace CoverageSample; public static
C# Advent Calendar 2022 3日目の記事です。 問題設定 Positional recordsとは、C# 9でrecordそれ自体と共に導入された、以下のような書き方です。 record Foo(int Id, int Value); // ↑とだいたい同じ /* record Foo { public int Id { get; init; } public int Value { get; init; } public Foo(int id, int value) => (Id, Value) = (id, value); }*/ ここで、positional recordsでの引数の個数はどこまで増やせるでしょうか? 現実離れしたネタ的な調査に見えますが、一部実際に困ったことがありそれがきっかけです。 実験にはSource Generatorを活用しました。本記事
問題 以下の内容の続きです。GitHub Actionsで dotnet build するだけで、コード中へのエラー指摘までしてくれる、という内容でした。 - name: Setup .NET uses: actions/setup-dotnet@v2 with: dotnet-version: 6.0.x - name: Build run: | dotnet build -warnaserror MSBuild version 17.3.0+92e077650 for .NET CSC : error CA1014: Mark assemblies with CLSCompliant [/home/runner/work/dotnet_actions_test/dotnet_actions_test/ConsoleApp1/ConsoleApp1.csproj] Error: /hom
環境 .NET 6 / C# 10.0 ASP.NET Core 6 先にまとめ ASP.NET Core 5以前では Startup というクラスがStartup.cs にありました。 ASP.NET Core 6では最小ホスティングモデル (minimal hosting model) が登場し、StartupクラスもなければProgramクラスすら一見すると無くなりました。 WebApplicationFactory を使うと、コントローラにHTTPリクエストを投げるようなテストを簡単に記述できますが、StartupやProgramが「無くなって」しまうと、ジェネリック型引数に指定するものに窮します。 3つの解決策を調べました。新規案件については、個人的には3番目の案が良いと考えます。 Startup.csを以前通り定義する。 5以前からのアップグレード組であれば最善に思います。 本
C# その2 Advent Calendar 2020 の14日目の記事です。 re:Invent 2020にて発表があり、AWS Lambdaのパッケージフォーマットとしてコンテナイメージが新たにサポートされるようになりました。 この記事ではさっそくそれを確認すべく、Dockerコンテナを使ってOpenCV[1]が動作するLambdaを作ることにします。従来はやや手間でした。 C#のアドベントカレンダーですから、開発にはこれまた出たばかりの.NET 5を使ってみましょう。AWSが公式に.NET 5に対応するベースイメージを提供しています。(仕事が速い) なお筆者はC#, OpenCV, Docker, AWSいずれも疎いので、本記事はあまり練られた話ではないことをお断りしておきます。 成果物 本記事で説明しているコードはこちらにあります。 以下長いですが、先に結論を述べますとこちらです。
GitHubにコードをpushすると静的コード解析を走らせて、問題を指摘してくれるようなCI (GitHub Actionsのワークフロー)を作ります。 完成図 https://github.com/shimat/csharp_actions_test/pull/1/files#diff-8d95ab4216ead1b0e5e99cb5ef8dece89aea47bd71c14d15a1dfb0f92e0947a2 静的コード解析について 本記事ではMicrosoftが用意している解析機を使います。従来はFxCop analyzersと呼ばれていたもので、今は .NET analyzers というそうです。 https://docs.microsoft.com/en-us/visualstudio/code-quality/migrate-from-fxcop-analyzers-to-n
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く