C# と .NET の .gitignore 設定

C#、.NET、Visual Studio プロジェクト向けの包括的な .gitignore。bin/obj ディレクトリ、NuGet パッケージ、ユーザーオプションファイル、ビルドアーティファクトを網羅します。

Language

詳細な説明

C# と .NET プロジェクトは複数のディレクトリにまたがる大量のビルドアーティファクトを生成します。Visual Studio はユーザー固有のファイルの層を追加します。GitHub 公式の Visual Studio 用 .gitignore テンプレートが最も長いものの1つであるのには理由があります。

コアビルドディレクトリ:

  • bin/ — コンパイル済みアセンブリ(.dll.exe)、デバッグシンボル(.pdb)、ランタイム設定。各プロジェクトに bin/Debug/bin/Release/ サブディレクトリがあります。
  • obj/ — 生成されたソース、一時アセンブリ、プロジェクトアセットを含む中間コンパイル出力。obj/ ディレクトリはビルドプロセスで使用され、コミットすべきではありません。
  • [Dd]ebug/[Rr]elease/ — ビルド設定の出力ディレクトリ。文字クラス表記で大文字小文字の両方に対応します。
  • x64/x86/ — ネイティブ相互運用プロジェクトのプラットフォーム固有ビルド出力。

NuGet パッケージ:

  • packages/ — レガシーの NuGet パッケージディレクトリ(PackageReference 形式以前)。最新の .NET は ~/.nuget/packages/ のグローバルキャッシュを使用します。
  • *.nupkg — 公開準備が完了したビルド済み NuGet パッケージファイル。
  • *.snupkg — デバッグサポート用のシンボル NuGet パッケージ。
  • packages.lock.json — 環境間の決定論的なリストアのために lockfile のコミットを検討してください。

Visual Studio ユーザーファイル:

  • *.suo — ソリューションユーザーオプション。ウィンドウ位置、ブレークポイント、開いているドキュメントの状態を保存するバイナリファイル。.NET リポジトリで不要な変更の最大の原因です。
  • *.user — ローカルデバッグパスと個人設定を含むプロジェクトユーザー設定。
  • .vs/ — Visual Studio 2015+ の隠しフォルダ。IntelliSense キャッシュ、診断データ、ユーザーごとの設定を含みます。数百メガバイトに達することがあります。

テストおよび分析出力:

  • TestResults/ — dotnet test によるユニットテスト実行結果とカバレッジデータ。
  • *.coverage*.coveragexml — Visual Studio のカバレッジツールからのコードカバレッジレポート。
  • BenchmarkDotNet.Artifacts/ — BenchmarkDotNet によるパフォーマンスベンチマーク結果。

コミットすべきもの: .sln(ソリューションファイル)、.csproj/.fsproj(プロジェクトファイル)、Directory.Build.propsglobal.json(SDK バージョン固定)、NuGet.Config(パッケージソース設定)。

ユースケース

Windows で Visual Studio、macOS で JetBrains Rider を使用する .NET チームが、両方の IDE のメタデータと共有の MSBuild 出力を処理する .gitignore を必要としています。

試してみる — .gitignore Generator

フルツールを開く