You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに GC の設計には、昔からなかなか崩せない緊張関係があります。高スループット、低レイテンシ、低メモリ使用量。この 3 つはどれも欲しいのですが、普通はどれかを伸ばすと別のどれかが苦しくなります。 停止時間を短くしたければ、より多くの仕事を並行フェーズへ移したくなります。しかしそのためには、普段のオブジェクトアクセスに余分な仕組みを載せる必要が出てきます。逆にスループットを優先するなら、平常時のコストはできるだけ安くしたい。その結果、重い仕事は GC 時にまとめて支払うことになり、停止が長くなりやすい。さらにメモリ使用量を抑えよう
.NET SDKを使うと、dotnetコマンドを使ってビルドやパッケージ追加、プロジェクト作成などができます。さて、パッケージ追加コマンドは.NET8までdotnet add packageでしたが、.NET9からdotnet package addにコマンドが変更されました。.NET9はSTSなので、LTSとしては.NET 10からの変更です。 今回はこの変更について見ていきます。 dotnetコマンドの一覧 まとめ 参考 dotnetコマンドの一覧 dotnetコマンド体系は、基本的にdotnet [sdk-options] [command] [command-options] [arguments]の形で構成されています。1SDKから実行するビルドなどのコマンドとしては、dotnet buildやdotnet run、dotnet testなどがあります。このコマンドは、コマンドと
昨日、 なごあずの集い#7 に参加して、 「.NETでIoT開発 - Linuxと低価格ハードで実現する新しい選択肢」というタイトルで登壇しました。 なごあずはオフラインのミートアップイベントで、ほとんどの参加者がイベント後に懇親会で交流を深める(こちらが本番?)のですが、、、 当日に娘氏発熱してしまい、家から出れなくなったので、運営の方々に相談してオンラインで登壇させていただきました。急なお願いにもかかわらず対応いただいてとっても感謝です。 娘氏、インフルエンザでした😱 で、登壇内容は、 IoTでC#.NETの実情 手ごろな価格のLinuxボードいろいろ 温湿度センサー+Milk-V Duo 256M->Azure IoT Centralしてみた わかったことと今後調べたいこと でした。 登壇内容 登壇内容は上のドクセルのスライドを見てください。 以下は雑記。 IoTで.NETの実情
C# Advent Calendar 2025 5日目の記事です。 概要 11月末の .NET Conf 2025 で、.NET 10 が発表されました!! 今回は、リリースされたばかりの .NET 10 を Ubuntu24.04 にインストールする方法と、インストール時のエラー対応の方法について書いていきます。(というか、インストールは簡単なので、エラーの方が本題) TL;DR # CPU アーキテクチャが AMD64 (x86_64) のとき wget http://ftp.jp.debian.org/debian/pool/main/i/icu/libicu72_72.1-3+deb12u1_amd64.deb # 以下のファイル名は CPU アーキテクチャによって異なります sudo dpkg -i libicu72_72.1-3+deb12u1_amd64.deb sudo r
事の始まり 先日、開発環境の Ubuntu 24.04 LTS を、リリースされたばかりの Ubuntu 25.04 にインプレースアップグレードしました。アップグレード自体は特に問題なく完了したのですが、後日、普段通り .NET のプロジェクトで作業しようと dotnet コマンドを実行したところ、見慣れないエラーメッセージとともに起動しなくなってしまいました。 dotnet コマンドがエラーで起動しない 具体的には、ターミナルで dotnet --info のような簡単なコマンドを実行しようとすると、以下のようなエラーメッセージが表示されてコマンドが異常終了してしまいました。 Process terminated. Couldn't find a valid ICU package installed on the system. Please install libicu (or i
C#のプロジェクト構成といえば、プロジェクトファイル(.csrpoj)とそれを束ねるソリューションファイル(.sln)が定番です。 現在プレビュー提供されているSLNX形式と呼ばれる新しいソリューションファイルが、.NET SDK 9.0.200から利用しやすくなりました。 いい機会なのでSLNX形式について、どのような課題を解決し、どう利用できるのか見ていきましょう。 C#のプロジェクト構成の変遷 プロジェクトファイルとソリューションファイル プロジェクトファイル ソリューションファイル .slnの課題 SLNX形式 .NET SDK 9.0.200+からSLNX形式を実用的に試せる 新規.slnxを作成する 既存.slnをSLNX形式にマイグレートする SLNX形式を開く dotnet buildでビルドする slnxとslnの併用 ファイルグロブでパス指定には対応していない slnと
先日、.NET CLIが.slnx形式に対応したという記事が公式から出されました。 未だプレビュー段階ではありますが、今後slnxはslnに代わる標準的なソリューションファイル形式になっていく予定です。この記事では改めてslnとは何か、そして今後主流になるとされる新たなslnx形式についてを書いていきます。 そもそもslnとは? sln(ソリューション)は、Visual StudioなどのIDEで複数の.NETプロジェクトを整理するためのファイルです。中身はテキストファイルで、ビルドの設定(Debug/Release)やプラットフォーム、csprojごとのGUIDなどの情報が記載されています。 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudio
C#をLinuxやコンテナで動かせるようになって久しくC#をコンテナで実行している人も多いでしょう。 C#はlinuxのamd64(x86_64)とarm64の両方に対応しているので、ライブラリや実装コードに気を払えば「同一コードベースでマルチプラットフォーム動作」が可能です。 また、Visual StudioでDockerfileを自動生成できることも手伝いC#のコンテナイメージは簡単に作れます。 今回は、そんなC#のコンテナイメージをlinux/amd64・linux/arm64のマルチプラットフォームに対応させるやり方を紹介します。 構成 ベースとなるDockerfile デフォルトのDockerfileは何をしているのか 利用イメージがマルチプラットフォーム対応しているか確認する マルチプラットフォームビルドに対応する マルチプラットフォームビルドを実行する GitHub Acti
.NET CLR1情報を取得するライブラリを数年前に作ったのですが、改めて便利なので公開しました。今回は.NET CLR監視のススメです。 guitarrapc/ClrProfiler .NET CLR情報とは EventListenerとEventPipeの使い分け EventListener API ClrProfiler Datadogで可視化 まとめ .NET CLR情報とは .NETにはCLR event tracingといわれる仕組みがあります。これは簡単にいうとパフォーマンスカウンターで取得していた.NETアプリケーションのメトリクスをWindowsとLinux両方でインプロセス取得できるようになる仕組みです。 .NET Core 2.2からCLRイベントを受信するためにEventListenerクラス導入されました。さらに.NET 3.0以降はEventPipeべースのイン
NuGetにはVisual Studioでパッケージをインストールするときに自動的に実行されるスクリプトの仕組みがあります、それがtools/init.ps1です。 前々からNuGetパッケージインストール時に警告なくスクリプトが実行されて嫌だなぁだと思っていましたが、今回はその理由を考えてみます。 init.ps1とは tools/init.ps1の現状 init.ps1の実行を確認する init.ps1ができること init.ps1の実行を止められるのか init.ps1の懸念 背景1. tools/init.ps1の存在が事前にわからない 背景2. パッケージバージョンロックが普及していない init.ps1を使った攻撃は過去にすでに起こっている init.ps1の代替手段 まとめ init.ps1とは NuGetパッケージにtools/init.ps1というスクリプトを配置すること
C#プロジェクトで参照しているNuGetパッケージのライセンス一覧を取得する方法が気になって調べたので紹介します。 ライセンス一覧を取得する方法 dotnet list packageとNuGet APIを使う sensslen/nuget-licenseを使う aaronpowell/dotnet-deliceを使う CycloneDX/cyclonedx-dotnetを使う ライセンスは途中で変わる まとめ ライセンス一覧を取得する方法 ライセンス一覧を確認するには大きく2つの選択肢「dotnet cliのNuGetパッケージ一覧機能を使って自前解析」と「OSSツールを使う」があります。一通り触った感じだと、自前解析も大した手間じゃなく、OSSならsensslen/nuget-licenseとCycloneDX/cyclonedx-dotnetが一番使いやすい感じでした。 dotnet
はじめに MS-IME の COM を Native AOT(以降「AOT」)で使い、漢字からひらがなに逆変換しました。 AOT の場合、通常の COM の使い方では動かないので、やり方を整理しておきます。 サンプルプログラムのソースコードは GitHub に上げてあります。 AOT の制約 C# で COM オブジェクトを作成する場合、手軽なのは Activator を使う方法かと思います。 Type? type = Type.GetTypeFromProgID("MSIME.Japan"); if (type != null) { IFELanguage2? ime = Activator.CreateInstance(type) as IFELanguage2; }
はじめに データベースに接続するプログラムの作り方を確認しておきたいと思いました。 .NET アプリでデータベースに接続する #.NET - Qiita その続きです。 System.Data.Common を使ってデータベースに接続する 前回は、接続先のデータベースに合わせて、それぞれ SqlClient 、MySqlClient 、OracleClient を使いました。 System.Data.Common を使った書き方が紹介されています。これを試してみます。 DbProviderFactoryを使用したプロバイダに依存しないコード .NET Framework+System.Data.Common で接続する Visual Studio で「新しいプロジェクトの作成」して「コンソールアプリ (.NET Framework)」を選択します。 Visual Studio の「Nuge
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く