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.props、global.json(SDK バージョン固定)、NuGet.Config(パッケージソース設定)。
ユースケース
Windows で Visual Studio、macOS で JetBrains Rider を使用する .NET チームが、両方の IDE のメタデータと共有の MSBuild 出力を処理する .gitignore を必要としています。