web-dev-qa-db-ja.com

SubversionおよびVisual Studioプロジェクトのベストプラクティス

私は最近、CおよびPerlで記述されたさまざまなプログラムとスクリプトの組み合わせから構築された現在のシステムを置き換えるために使用される大規模システムの計画の一環として、Visual StudioでさまざまなC#プロジェクトの作業を開始しました。私が現在取り組んでいるプロジェクトは、Subversionにコミットするためのクリティカルマスに達しました。 Visual Studioプロジェクトのリポジトリにコミットすべきものとすべきでないものを考えていました。ビルドアーティファクトであり、実際にコミットする必要のないさまざまなファイルが生成されることはわかっています。また、Visual StudioでSVNを適切に使用するためのアドバイスはないかと思いました。現時点では、Visual Studio 2010ベータ版でSVN 1.6サーバーを使用しています。アドバイス、意見は大歓迎です。

60
Alex Marshall

MSDNによると

次のファイルをVisual Studioソース管理に追加できます。

  • ソリューションファイル(*.sln)。
  • プロジェクトファイル、たとえば*.csproj*.vbprojファイル。
  • Visual Studioプロジェクトの実行時の動作を制御するために使用される、XMLに基づくアプリケーション構成ファイル。

ソース管理に追加できないファイルには、次のものが含まれます。

  • ソリューションユーザーオプションファイル(*.suo)。
  • プロジェクトユーザーオプションファイル、たとえば*.csproj.user*.vbproj.userファイル。
  • Web情報ファイル、たとえば、*.csproj.webinfo*.vbproj.webinfo、Webプロジェクトの仮想ルートの場所を制御します。
  • ビルド出力ファイル、たとえば、*.dllおよび*.exeファイル。
89
Justin R.

AnkhSVN -Visual Studio 2008/2010のSubversionソース管理プラグインを使用することをお勧めします。

これを使用して、ソリューション、プロジェクト、およびソースのリポジトリへの最初の追加とコミットを実行できます。ビルドアーティファクトは追加されません。ビルドによって生成されるものは追加されず、ソリューションによって参照されるファイルのみが追加されます。ソリューションに含まれていない必要な部分が他にある場合は、後で追加できます。

16
GraemeF

次のファイルをバージョン管理に配置します。

  • .dsw(VS6ワークスペース)
  • .dsp(VS6プロジェクト)
  • .sln(VSソリューション)
  • 。* proj(さまざまなタイプのVSプロジェクトファイル)
  • もちろん、作成するソースファイルやその他のアーティファクト

Donot次のファイルをバージョン管理に入れます:

  • .ncb(ブラウジングまたはインテリセンスに関係するもの)
  • .suo(ウィンドウの配置などのユーザーワークスペース設定-私は思う)
  • .user(ブレークポイントなどのユーザープロジェクト設定-私は思う)

また、オブジェクトファイル、実行可能ファイル、自動生成ファイル(生成される可能性のあるヘッダーなど)を入れないでください。

実行可能ファイルおよびその他の生成されたファイルに関しては、リリースをアーカイブできるようにする場合は例外があります。これは良いアイデアかもしれませんが、おそらくソースコードとは少し異なる方法で、場合によっては別の場所で管理したいと思うでしょう。これを行う場合は、後でデバッグできるように.pdbファイルもアーカイブしてください。シンボルサーバーを使用して、アーカイブされたシンボルを保存することもできます(シンボルサーバーとそのドキュメントについては Debugging Tools for Windows を参照してください)。

SVNから除外するVS固有のファイルのリストを次に示します。

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
15
Michael Burr

ソリューションレベル:

  • .slnソリューションファイルを追加します
  • .suoソリューションユーザーオプションファイルを無視します

プロジェクトレベル:

  • .csproj.vbproj(およびc ++ proj?)ファイルを追加します
  • .csproj.user.vbproj.userファイルを無視します
  • binディレクトリを無視します
  • objディレクトリを無視します
  • 実行時に生成されるファイル/ディレクトリ(ログなど)を無視します

VSアドインを使用すると、無視する必要があるファイルが生成される場合があります(つまり、ReSharperは.resharperおよび.resharper.userファイルを生成します)。

無視する項目は、ファイル名(つまり、MyProject.csproj)によって明示的に無視するか、ワイルドカードパターン(つまり、*.csproj.user)によって無視できます。


無視を設定したら、ソースのクリーンコピーをチェックアウトしてから、ビルドは変更を表示しません(つまり、バージョン管理されていない新しいファイルは表示されません)。

11
adrianbanks

バージョン管理してはいけないと思うすべてのファイルを手動で含めます。

私のグローバル無視パターンは次のとおりです。

.dll .pdb .exe .cache .webinfo .snk bin obj debug _Resharper .user resharper

5
Andre Gallo

無視リストを使用している場合、SVNは大文字と小文字を区別します。したがって、binフォルダーとBinフォルダーを個別に無視することを忘れないでください。

また、質問がありました。ステータスアイコンを更新するのに何度も時間がかかるのはなぜですか。時には非常に混乱します。

2
Manoj

Mercurialの無視リストについては、 Mercurial .hgignore for Visual Studio 2008 projects を参照してください。私はSVN無視リストの構文に精通していませんが、このスレッドにはVisual Studioで無視するものの良いリストがいくつかあります。

1
CAD bloke