.slnはソース管理にコミットする必要がありますか?


101

.slnファイルをソース管理にコミットすることはベストプラクティスですか?そうすることが適切または不適切なのはいつですか?

更新 回答にはいくつかの良い点がありました。回答ありがとうございます!


21
コミットしたくない.SUOファイルだと思います。
apandit 2009年

参考までに、タスクリスト(使用する場合)は.SUOファイルに格納されていると思います...したがって、ソースリストにコミットしたくない場合でも、「削除」したくない場合があります。余分な粗末。
Benjol 2010

回答:


69

他の回答から、ソリューションファイルは有用であり、公式ビルドに使用されていなくてもコミットする必要があることは明らかだと思います。これらは、Go To Definition / DeclarationなどのVisual Studio機能を使用するすべての人にとって便利です。

デフォルトでは、絶対パスやその他のマシン固有のアーティファクトは含まれていません。(残念ながら、AMD CodeAnalystなど、一部のアドインツールはこのプロパティを適切に維持しません。)プロジェクトファイル(C ++とC#の両方)で相対パスを使用するように注意すると、それらはマシンに依存しなくなります。あまりにも。

おそらくより有用な質問は次のとおりです。どのファイルを除外する必要がありますか?これが私のVS 2008プロジェクトの.gitignoreファイルの内容です。

*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/

(最後のエントリーは、AMD CodeAnalystプロファイラー専用です。)

VS 2010の場合、次のものも除外する必要があります。

ipch/
*.sdf
*.opensdf

2
単体テストの結果には無視ルールもあります。一部の人々はそれらをチェックインするかもしれませんが、私は混乱が好きではありません
Matthew Whited

9
+1-個人的には、ビルドされたもの、つまりbin /とobj /もコミットしません
Steven Evers

1つ以上のプロジェクトを含む.slnファイルのみをコミットします
Justin

2
これが私のsubversionグローバル無視パターンです:* .vsmdi * .suo * / [Bb] in [Bb] in * / obj obj TestResults *。[Uu] ser * Thumbs.db * Web.Publish.xml * WebApplication.Publish。 xml * Web.log
メリット

以下は、一時ファイル、ビルド結果、人気のあるVisual Studioアドオンによって生成されたファイルを含む、一般的に共有される.gitignoreファイルです。
Lauren Van Sloun、2018年

58

はい-常に適切だと思います。ユーザー固有の設定は他のファイルにあります。


3
間違いの.slnは.PRJファイルへの参照を持っている(プロジェクト)
dplante

20

はい、これを行う必要があります。ソリューションファイルには、ソリューションの全体的な構造に関する情報のみが含まれています。この情報はソリューション全体に適用され、プロジェクトのすべての開発者に共通です。

ユーザー固有の設定は含まれていません。


13

あなたは間違いなくそれを持っている必要があります。他の人が言及した理由に加えて、プロジェクト全体の1つのステップのビルドを可能にする必要があります。


8

ソリューションファイルをチェックインする必要があることに一般的に同意しますが、私が働いている会社では別のことをしました。かなり大きなリポジトリがあり、開発者は時々システムのさまざまな部分で作業します。作業方法をサポートするために、1つの大きなソリューションファイルまたはいくつかの小さなソリューションファイルを用意します。これらは両方ともいくつかの欠点があり、開発者側で手動の作業が必要です。これを回避するために、すべてを処理するプラグインを作成しました。

プラグインを使用すると、各開発者は、リポジトリから関連するプロジェクトを選択するだけで、ソースツリーのサブセットをチェックアウトして作業できます。その後、プラグインはソリューションファイルを生成し、指定されたソリューションのプロジェクトファイルをオンザフライで変更します。参照も処理します。言い換えれば、開発者がしなければならないことは、適切なプロジェクトを選択することだけであり、その後、必要なファイルが生成/変更されます。これにより、他のさまざまな設定をカスタマイズして、会社の標準を確保することもできます。

さらに、さまざまなチェックインポリシーをサポートするためにプラグインを使用します。これにより、ユーザーが誤ったコードや非準拠のコードをリポジトリに送信するのを防ぎます。


このような音は、私の長い未回答の質問(stackoverflow.com/questions/1490728/…)の答えの1つかもしれません。このプラグインのコピーを入手する可能性はありますか?
Benjol 2010

@ベンジョル:申し訳ありませんが、それは内部ツールではありません。上記の機能に加えて、他の多くの内部システムとも統合されているため、実行方法に非常に固有です。ソリューション/プロジェクトの一部だけが必要な場合は、実装するのはそれほど難しくありません。
ブライアンラスムッセン2010

さて、あなたの「大きな解決策」には、プロジェクト参照またはファイル参照がありますか?また、開発者がファイル/プロジェクトへの新しい参照を追加した場合、プラグインはチェックイン前に適切な変換を行いますか?また、開発者がチェックアウトすることを選択していない依存関係をどのように処理しますか?
Benjol 2010

8

はい、あなたがコミットすべきことは:

  • ソリューション(* .sln)、
  • プロジェクトファイル、
  • すべてのソースファイル、
  • アプリ構成ファイル
  • ビルドスクリプト

コミットすべきでないものは次のとおりです。

  • ソリューションユーザーオプション(.suo)ファイル
  • ビルドされたファイルをビルドする(ビルドスクリプトを使用するなど)[編集:] -必要なすべてのビルドスクリプトとツールがバージョン管理下で利用できる場合のみ(ビルドがCVS履歴で本物であることを確認するため)

他の自動生成されたファイルに関しては、別のスレッドがあります


1
「自動生成されたファイル」に同意する必要があります。
Mehrdad Afshari、

@Mehrdadインテリセンスファイルもコミットする必要があると思いますか?
Edison Gustavo Muenz、2009年

1
@エジソン:いいえ。たとえば、LINQ to SQLデータコンテキストなどの自動生成されたソースファイルを参照しています。
Mehrdad Afshari、

2
Formname.Designer.csファイルは自動的に生成されたと見なされませんか?
jasonh 2009年

1
私が意味したのは、ビルド時に生成されたファイルです。私はこれを頻繁に見つけます-誰かが自動的にビルドされたファイルをコミットし、コメントが変更されたという理由だけでSVNが変更を報告します。
Groo、

5

はい、ソース管理の一部である必要があります。アプリケーションからプロジェクトを追加/削除すると、.slnが更新され、ソース管理下に置くとよいでしょう。これにより、アプリケーションコード2のバージョンを元に戻し、直接ビルドを行うことができます(必要な場合)。


5

ほとんどの場合、.slnファイルをソース管理にコミットすることをお勧めします。

.slnファイルが別のツール(CMakeなど)によって生成されている場合、それらをソース管理に置くことはおそらく不適切です。


4

はい、常に.slnファイルを含める必要があります。ソリューションに含まれるすべてのプロジェクトへのリンクが含まれています。


2

すべての同期を保つためです。必要なプロジェクトはすべて一緒に配置されており、プロジェクトを見逃す心配はありません。ビルドサーバー(Ant Hill Pro)もslnを使用して、リリース用にビルドするプロジェクトを特定します。


2

通常、すべてのソリューションファイルをソリューションディレクトリに配置します。このようにして、ソリューションをコードから少し分離し、作業する必要があるプロジェクトを選択するのが簡単になります。


1

ソース管理にそれを格納しないことを検討する唯一のケースは、ソース管理にある多くのプロジェクトを含む大規模なソリューションがあり、いくつかのメインソリューションからいくつかのプロジェクトを含む小さなソリューションを作成したい場合です。一時的なプライベート要件。


1

はい-製品の生成に使用されるすべてのものをソース管理する必要があります。


1

TFSバージョン管理でファイルを保持または解決します。しかし、メインのソリューションが本当に大きいため、ほとんどの開発者は必要なものだけを含む個人的なソリューションを持っています。メインソリューションファイルは主にビルド​​サーバーによって使用されます。


0

.slnは、tfsで問題が発生していない唯一の問題です。


1
おかしいです... SLNは私がこれまでに修正しなければならなかった唯一のファイルです...しかし、問題は開発者がマージに注意していないことが原因でした。
マシューホワイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.