C#再考_No1 (作成されるファイルについて)
0.初めに
仕事でも使用してきたC#ですが、いろいろあやふやな点があったり、最近のバージョンだとどう書くのがよいか等整理していきたいと思います。
今回はソリューション作成時に生成される各種ファイルとパッケージ管理について確認したいと思います。
1.Visual Studio(2022) で作成するとき
1)sln ファイルについて
Visual Studio のバージョン、プロジェクトとの紐づけ、Debug,Release情報が含まれます。
プロジェクト ソリューション (.sln) ファイル - Visual Studio (Windows) | Microsoft Learn
2).vs フォルダ
このフォルダには、プロジェクトを操作した際の情報が含まれています。具体的には、開いたファイルやソリューションエクスプローラーの状態などが記録されています。
[中に含まれるファイルについて]
〇 vsidx ファイルについて
検索のために使用されるファイルです。
〇 .suo ファイルについて
ソリューション ユーザー オプション (.suo) ファイルには、ユーザーごとのソリューション オプションが含まれています。
ソリューション ユーザー オプション (.suo) ファイル - Visual Studio (Windows) | Microsoft Learn
〇 DocumentLayout.json ファイルについて
レイアウトに関連するファイルです。
3) bin フォルダについて
実行形式ファイル(***.exe など)を格納しています。
4)obj フォルダについて
中間ファイルやバイナリファイルを格納しています。
5)csproj ファイル
ターゲットフレームワーク、プロジェクトのビルド方法と実行方法、主要設定ファイル、コンパイラの対象などが設定情報になります。
2.Linux や Mac で作成するとき
dotnet new console --framework net8.0 --use-program-main
コマンドで作成すると、objフォルダ、csproj ファイル、Program.csファイルが生成されます。
3.コード管理しなくてよいファイル
基本管理すべきファイルは、ソースファイルとcsprojファイル、vidual studioを使用している場合はslnファイルとなります。
以下のフォルダ、およびその中のファイルは管理不要です。
1).vs フォルダ
ユーザごとの設定関連のファイルなので管理不要です。
2)bin フォルダ、obj フォルダ
デバックやリリースすると作成されるので、ソース管理は不要です。
4.Nuget管理について
基本 visual studio 2022 の操作をベースにしています。
デフォルトだとPackages.config という管理方式がとられています。
(「ツール」⇒「オプション」⇒「NuGetパッケージマネージャー」⇒「全般」で見れます。)
csproj ファイルに以下のような記述がされ、dll等はUserフォルダは以下の.nuget>packages (グローバルパッケージフォルダー)に格納されます。
<ItemGroup><PackageReference Include="Microsoft.ML" Version="3.0.1" /></ItemGroup>
NuGet でグローバル パッケージ、キャッシュ、一時フォルダーを管理する方法 | Microsoft Learn
この設定だとslnファイルと同じ階層に「packages」フォルダができ、かつグローバルパッケージフォルダーにも保存されることがあるようです。
グローバルパッケージフォルダーにのみ保存されるPackageReferenceという管理方法に切り替えたほうがよさそうです。