Visual Studioの.suoファイルと.userファイルをソース管理に追加する必要がありますか?


841

Visual Studioソリューションには、2種類の非表示のユーザーファイルが含まれています。1つは、.suoバイナリファイルであるソリューションファイルです。もう1つは、.userテキストファイルであるプロジェクトファイルです。これらのファイルには正確にどのようなデータが含まれていますか?

これらのファイルをソース管理(私の場合はSubversion)に追加する必要があるかどうかも疑問に思っていました。これらのファイルを追加せず、別の開発者がソリューションをチェックアウトした場合、Visual Studioは自動的に新しいユーザーファイルを作成しますか?


9
.suoファイルは自動的に再作成されます。問題が発生した場合に設定をデフォルトに「リフレッシュ」する優れた方法。
CodingBarfield

3
SubversionプロジェクトとVisual Studioプロジェクトのベストプラクティスは、この正確なトピックに関するより一般的な質問です。また、承認された回答には、MSDNの公式ドキュメントへのリンクが含まれています。このドキュメントには、ソース管理システムに追加する必要があるVSソリューション/プロジェクトのファイル/ディレクトリ、および無視する必要があるパーツが詳細に記載されています。
Attila Csipak 14

3
* .suoについては、msdn.microsoft.com
en

回答:


673

これらのファイルには、一般的にマシンに固有のユーザー設定設定が含まれているため、SCMに配置しないことをお勧めします。また、VSは実行するたびにほとんど変更するため、SCMによって常に「変更済み」としてマークされます。私もどちらも含めていません。私はVSを2年間使用しているプロジェクトに参加しており、それを行うことに問題はありませんでした。マイナーな唯一の不快な点は、デバッグパラメーター(実行パス、展開ターゲットなど)がこれらのファイルのいずれかに保存されている(どちらかわからない)ため、それらの標準がある場合、 '他の開発者が開発環境全体を「すぐに使える」状態にするために、SCMを介してそれを公開します。


22
注意してください。suoファイルには、プロジェクトがソリューション内でロード/アンロードされたかどうかの情報が格納されます。
Kugel

5
デバッグ情報は.userファイルに保存されていると思います(少なくともSQL Serverデータツールの場合)。また、[デバッグ]タブで設定を変更しても、すぐに.userに永続化されるとは限りません(ソリューションを閉じると問題が発生する、少し煩わしい...または.sqlprojファイルに保存されている別の設定を変更する)。
jamiebarrow 2012

87
任意のテキストエディタで.userファイルと.csprojファイルの両方を開くことができます。関連するデバッグ設定を.userから.csprojにコピーして貼り付け、.userファイルを削除することをテストしました。デバッグは引き続き機能し、.csprojファイルの新しい場所から正しい設定を喜んで読み取っています。これにより、.userファイルをコミットせずにデバッグ設定をコミットする方法が提供されます。それらを正しい構成にしてください(デバッグ、リリースなど)。私のマシンで動作します!=)
Chris Nielsen

139

これらを追加する必要はありません-ユーザーごとの設定が含まれており、他の開発者はあなたのコピーを望んでいません。


19
複数の異なるマシンで自分で作業している場合、それらを追加する価値はありますか?
thepocketwade 2009

33
予期しないシステムの違いに対して脆弱になる可能性があるため、私はそうしません。たとえば、職場でx64を、自宅でx86を使用している場合、「c:\ program files(x86)」と「c:\ program files」が詰まる可能性があります。わかりませんが、危険を冒すことはありません。
Steve Cooper

2
これらにはユーザー固有の情報が含まれていますが、(プロジェクトに含める)オプションを介して新しく追加されたファイルの情報も.csprojファイルに含まれているため、他のユーザーが新しく追加されたすべてのプロジェクトリソースを手動で追加する必要があります。誰かが回避策を知っている場合は、ここに言及してください。
ツェッペリン2015

69

*.suo*.userファイルをソース管理下に置くのが良い考えではない理由を説明する人もいます。

次のsvn:ignore2つの理由から、これらのパターンをプロパティに追加することをお勧めします。

  1. そのため、他の開発者が1つの開発者の設定を使用することはありません。
  2. したがって、ステータスを表示したり、ファイルをコミットしたりしても、それらのファイルによってコードベースが乱雑になり、追加する必要のある新しいファイルが不明瞭になることはありません。

svn:ignoreプロパティはどこにどのように設定されますか?
Peter Mortensen

@PeterMortensen、この質問を参照してください。stackoverflow.com/questions/86049/...
JXG

しかし、ケース(参照があり、この答えを追加するためには).user、そうして1が選択できますのみ無視しない.suoか、1は無視することができ- .userそれはそれらを追加するために意識的な決定を行うようにすることを、?そう考えてはいけません。ポイントはsvn:ignore、意識的な決定が必要ないものにマークを付けることです。
PJTraill、2015年

49

バイナリファイル(* .suo)はコミットしませんが、.userファイルはコミットします。.userファイルには、たとえばプロジェクトをデバッグするための開始オプションが含まれています。起動オプションは、プロジェクトのプロパティの[デバッグ]タブにあります。一部のプロジェクトではNUnitを使用し、プロジェクトの開始オプションとしてnunit-gui.exeを構成しました。.userファイルがない場合、各チームメンバーは個別に構成する必要があります。

お役に立てれば。


4
私もこれが当てはまると考え始めています-ユーザーファイルをコミットして、チームの開発者が同じデバッグ設定を使用するようにします。彼らが自分のマシンでそれを変更した場合でも、標準的な方法がソース管理のバージョンである限り、それでも問題ありません。
jamiebarrow 2012

1
他の人はこれを行うことを勧めていませんが、私は危険が何であるかについてはわかりません。精度の低い設定のレポファイルがユーザーの(より良い)ローカルコピーを吹き飛ばしてしまうためでしょうか?(私たちのチームはMercurial、BTWを使用しています。)
Jon Coombs 2013

2
マイクロソフト、.userファイルをソース管理に追加しないことをお勧めします。
DavidRR 2015年

1
デバッグ設定を.csprojに移動できます。このコメントを
Timbo

26

2011年にGoogleでこの質問/回答を見つけたので、少し時間を取って、Visual Studio 2010で作成された* .SDFファイルへのリンクを、バージョン管理に追加してはいけないファイルのリストに追加すると思います( IDEがそれらを再作成します)。* .sdfファイルが他の場所で正当に使用されるかどうか確信がなかったため、SVNからの特定の[プロジェクト名] .sdfファイルのみを無視しました。

Visual Studio変換ウィザード2010が大規模なSDFデータベースファイルを作成するのはなぜですか?


2
SDFファイルは、おそらくSQL Server Compact Editionデータベースです。
カールG

23

いいえ、あなたが言ったように、それらはユーザー固有なので、ソース管理にそれらを追加すべきではありません。

SUO(ソリューションユーザーオプション):ソリューションに関連付ける可能性のあるすべてのオプションを記録し、ソリューションを開くたびに、行ったカスタマイズが含まれるようにします。

.userファイルには、プロジェクトのユーザーオプションが含まれ(SUOはソリューション用です)、プロジェクトファイル名が拡張されます(たとえば、anything.csproj.userには、anything.csprojプロジェクトのユーザー設定が含まれます)。


20

これは、この問題に関するマイクロソフトの意見のようです。

ソース管理への.suoファイルの追加(および編集)

プロジェクトがDebuggingWorkingDirectoryをsuoファイルに格納する理由がわかりません。これがユーザー固有の設定である場合は、*。proj.userファイル名に保存することを検討してください。プロジェクトで作業しているすべてのユーザー間でその設定を共有できる場合は、プロジェクトファイル自体に保存することを検討してください。

ソース管理にsuoファイルを追加することさえ考えないでください!SUO(soluton user options)ファイルは、ユーザー固有の設定を含むことを目的としており、同じソリューションで作業しているユーザー間で共有しないでください。sccデータベースにsuoファイルを追加する場合、IDEで他に何を壊すのかわかりませんが、ソース管理の観点からは、Webプロジェクトのscc統合を壊します。別のユーザーがVSSアクセスを行うと、sccが完全に機能しなくなる可能性があります(suoファイルに保存されているVSSのデータベースパスは、他のユーザーには有効ではない場合があります)。

アリンコンスタンタン(MSFT)


また、MSDNから:ソリューションユーザーオプション(.Suo)ファイル。最初の文は、マイクロソフトの意図を非常に明確にします。「ソリューションユーザーオプション(.suo)ファイルには、ユーザーごとのソリューションオプションが含まれています。このファイルをソースコード管理にチェックインしないでください。」
DavidRR 2015年

19

MicrosoftのVisual SourceSafeでは、これらのファイルはユーザー固有の設定ファイルであるため、デフォルトではソース管理に含まれていません。ソース管理としてSVNを使用している場合は、そのモデルに従います。


12

Visual Studioが自動的に作成します。それらをソース管理に置くことはお勧めしません。ローカル開発者のSOUファイルが原因で、VSがその開発者ボックスで不規則に動作することが何度もありました。ファイルを削除してVSに再作成させると、常に問題が解決しました。


.souファイルを残しましたが、パッケージのリロードで問題が発生していました。.souファイルを削除すると問題が修正されました。ありがとうございました。
2017

11

上のMSDNのWebサイト、それがはっきりと述べています

ソリューションユーザーオプション(.suo)ファイルには、ユーザーごとのソリューションオプションが含まれています。このファイルをソースコード管理にチェックインしないでください

したがって、ソース管理にチェックインしている間は、これらのファイルを無視してもかなり安全だと思います。


9

私はしません。「ユーザー」ごとに変更される可能性があるものは、通常、ソース管理には適していません。.suo、.user、obj / binディレクトリ


8

これらのファイルはユーザー固有のオプションであり、ソリューション自体から独立している必要があります。Visual Studioは必要に応じて新しいものを作成するため、ソース管理にチェックインする必要はありません。確かに、個々の開発者が自分の環境を自分の好みに合わせてカスタマイズできるようになるため、おそらくそうしない方が良いでしょう。


7

.userファイルはユーザー固有であるため、ソース管理できません。リモートマシンの名前やその他のユーザーに依存するものが含まれています。これはvcproj関連のファイルです。

.suoファイルはsln関連のファイルであり、「ソリューションユーザーオプション」(スタートアッププロジェクト、ウィンドウの位置(ドッキングされているもの、フローティングされているものなど)など)が含まれています。

これはバイナリファイルであり、「ユーザー関連」のものが含まれているかどうかはわかりません。

当社では、これらのファイルをソース管理下に置いていません。


7

これらには、通常、単一の開発者に割り当てられるプロジェクトに関する特定の設定が含まれています(たとえば、開始プロジェクトや、アプリケーションのデバッグ時に開始する開始ページなど)。

そのため、バージョン管理にそれらを追加せずに、VSがそれらを再作成して、各開発者が希望する特定の設定を持つことができるようにするのが良いでしょう。


5

.userはユーザー設定です。.suoはソリューションのユーザーオプションです。これらのファイルをソース管理下に置く必要はありません。ユーザーごとに再作成されます。



4

Rational ClearCaseを使用すると、答えはノーになります。.sln&。* projのみをソースコード管理に登録する必要があります。

他のベンダーにはお答えできません。私が正しく思い出せば、これらのファイルは「ユーザー」固有のオプション、つまり環境です。


only the .sln & .*proj should be registered-ここにたくさんのファイルを忘れていませんか?
ウルフ

@Wolfのほかに
Polluks 2017

3

これらのファイルをバージョン管理に追加しないでください。これらのファイルは、他のワークステーションで問題を引き起こすバージョン管理にチェックインされている場合、ワークステーション固有の情報とともに自動生成されます。


2

いいえ、これらは開発者/マシン固有のローカル設定であるため、ソース管理に関与するべきではありません。

GitHubは、https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreで無視するVisual Studioユーザー向けの推奨ファイルタイプのリストを維持しています

svnには、次のglobal-ignoreプロパティセットがあります。

* .DotSettings.User
* .onetoc2
* .suo
.vs
PrecompiledWeb
のThumbs.db
OBJ
ビン
デバッグ
* .user
* .vshost。*
* .tss
* .dbml.layout


1

ProjectProperties> Debugging> Environmentで実行可能ディレクトリの依存関係を設定すると、パスは「.user」ファイルに保存されます。

上記のフィールドにこの文字列を設定するとします:"PATH = C:\ xyz \ bin" これは '.user'ファイルに保存される方法です:

<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>

これは、OpenCVでの作業中に非常に役立ちました。プロジェクトごとに異なるバージョンのOpenCVを使用できます。別の利点は、新しいマシンでプロジェクトを設定するのが非常に簡単だったことです。対応する依存関係ディレクトリをコピーする必要がありました。したがって、一部のプロジェクトでは、「。user」をソース管理に追加することを好みます。

それでも、プロジェクトに完全に依存しています。必要に応じて電話を受けることができます。


シンボリックリンクもこの目的に非常によく機能します。
sɐunıɔןɐqɐp

1

両方の、他の回答で説明.suoし、.userソースコントロールに追加されるべきではない、彼らは、ユーザ/マシン固有であるので、(BTW .suoVSの最新バージョンのための専用の一時ディレクトリに移動された.vs完全にソース制御不能に保たれるべきです)。

ただし、アプリケーションでVSでデバッグするための環境の設定が必要な場合(このような設定は通常.userファイルに保存されます)、サンプルファイルを準備し(のように名前を付けて.user.SAMPLE)、参照用にソース管理に追加すると便利です。

このようなファイルにハードコードされた絶対パスの代わりに、相対パスを使用するか、環境変数に依存することは理にかなっています。そのため、サンプルは、他のユーザーが簡単に再利用できるほど十分に汎用的です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.