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という管理方法に切り替えたほうがよさそうです。






この記事が気に入ったらサポートをしてみませんか?