web-dev-qa-db-ja.com

.sln、.suo、および.csprojファイルがあるのはなぜですか?

私はVisual Studio 2010を使い始めました。C#プログラムを使い終えると、.sln、および.suoファイルはプロジェクトのルートディレクトリにあり、.csprojファイルはサブディレクトリにあります。それらのファイルは何のためのものですか?

Gitリポジトリに入れるファイルを識別する必要があります。私が作成したソースコード/ドキュメントと一緒に、これらの3つのファイルだけが私が注意しなければならないものだと思います。ただし、正しいファイルを追跡しているかどうかはわかりません。

追加されました

個人用マクロファイルはどうですか? Emacsキースイッチマクロ があり、.slnファイルまたは.csprojファイルにこのマクロがありますか?

58
prosseek

.slnおよび.csprojをコミットする必要がありますが、.suoまたは.userファイルはコミットしないでください。

次を.gitignoreに追加できます。

#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
70
SLaks

SLN(ソリューション)はソリューションファイルです。開発しているものを構成するプロジェクトのコレクションに関する情報を保存します。プロジェクト、ソース管理設定、またはその他のグローバルレベルのものが含まれます。

CSProj(プロジェクトファイル)は、実際のコードプロジェクト(C#ライブラリ、WCFサービスなど)です。プロジェクトレベルで情報を保存します。関連するすべての参照、Classessなどをラップします。

SUO(ソリューションユーザーオプション)は、ユーザー設定ファイルです。完全に使い捨てです。削除できますが、最も一般的に失われるのはブレークポイントです。


SUO設定ファイル以外のすべてをプッシュします。

Bin、debug、objディレクトリを含めないでください。含める必要があるDLL(またはコンパイル/生成されたオブジェクト)は、アプリケーションの外部にあるもののみです。

42
Nix

MSDNから:

ソリューション(.sln)は、Visual Studioでプロジェクトを整理するための構造です。 Visual Basic 6.0のWindowsプログラムグループ(.vbg)ファイルおよびVisual C++ 6.0のプロジェクトワークスペース(.dsw)ファイルと同様の機能を実行します。ソリューションは、プロジェクトの状態情報を.sln(テキストベース、共有)および.suo(バイナリ、ユーザー固有のソリューションオプション)ファイルに保持します… [ソース]

さらに、MSDNからも:

ソリューションユーザーオプション(.suo)ファイルは、バイナリ形式で格納された構造化ストレージ(複合)ファイルです。 .suoファイル内の情報を識別するために使用されるキーとなるストリームの名前を使用して、ユーザー情報をストリームに保存します… [ソース]

VCSに.suoファイルを配置する必要はありません。これはユーザー固有のファイルです。

14
user405725

SUOファイルには目的があり、常に無視する必要があるという声明には同意しません。私はそれらを無視しません、そして、一般的な慣行として、私はそれらをSVNリポジトリに追加します。私のプロジェクトは、スタートアッププロジェクトまたはプラットフォームのソリューションのデフォルトを常に使用しているわけではありません。新しいプロジェクトを取得しても、デフォルトで64ビットと適切なプラットフォームが使用されないのは面倒です。 SUOには、これらのデフォルトを適切に設定するための設定が含まれています。

これの欠点は、バイナリファイルであるため、ほとんどの場合、ソリューションを開いてファイルを変更するたびに行うことです。通常、ファイルは100k未満であり、何かを変更したことがわかっていない限り、変更をコミットしません。

3
GR Envoy