bin(またはdll)をTFSにチェックインしますか?


11

TFSに関する簡単な質問-bin / debugフォルダーをTFSにチェックインしますか?(もしそうなら、なぜ?)それらのフォルダーのコンテンツは動的に生成されるので、プログラマーが読み取り専用の問題に遭遇しないように、それらを除外するほうが良いでしょうか?


このスタック交換の提案に興味があるかもしれません。ベータを開始する準備がほぼ整いました。もう少し必要です。
グレートウルフ

回答:


27

一般的なルールとして、ソース管理はソースのみに使用するのが最適であり、生成されたファイルはソースではありません。

例外があります。場合によっては(Visual Studioを使用して)ミニダンプを読み取るために.pdbファイルを保持することもできます。生成されたファイルを必ずしも正確に再作成できないように、ツールチェーンを複製できない場合があります。これらのケースでは、VCSのすべての変更ではなく、リリースされたソフトウェアに対してこれを行うことに主に関心があり、いずれの場合もバージョン管理されたフォルダーに簡単に配置できます。(とにかく、これらは通常バイナリファイルであり、あるバージョンから別のバージョンへの包括的な変更はなく、VCSに含まれていることからそれほど利益を得ることはありません。)


6
デバッグシンボルの保持に関心がある場合は、シンボルサーバーをセットアップすることをお勧めします。(ソースインデックスを使用して)正しく実行すると、ミニダンプのデバッグは、まずシンボルサーバーからシンボルを取得し、次にソース管理から関連するソースを取得します。各ビルドにチェックインしてタグを付ける場合、これを手動で行います。
Shog9

8

簡単な答え?いいえ、それをしないでください!そうしない多くの理由を考えることはできませんが、あなたがしたいと思う理由はありません。

dllをチェックインできると思うのは、すべての開発者がビルドするためにインストールしたとは思わないサードパーティライブラリの場合だけです。それでも、binフォルダーにはありません。

つまり、私は各展開パッケージをソース管理に入れる必要がある会社で働いていましたが、それは私たちがクライアントに与えたさまざまなビルドを追跡し、必要に応じて簡単にロールバックできるようにするためでした。


1
しない主な理由:ソース管理に何テラバイトのストレージを消費させたいですか?
EKW

1
たとえば、@ EKW C#は、歴史的には同じソースから同一のバイナリを生成しません。これは.NET Coreでは異なる場合がありますが、これは、たとえばリリースされたビルド用に生成されたバイナリを保持する1つの理由です。ただし、ソース管理には入れません。それはその仕事にふさわしいツールではありません。
シブ

5

binフォルダーをTFSにチェックインしません。お気づきかもしれませんが、そうすれば、開発者がソリューションを作成するたびに、binフォルダーをチェックアウトすることになります。良くない。ただし、プロジェクトがコンパイルして実行するために必要なライブラリがあります。私たちのルールは、プロジェクトをソース管理から開くことができ、コンパイルして実行する必要があるということです。そのため、プロジェクトが参照する必要があるDLLの「BinRef」フォルダーを作成し、BinRefフォルダーにコピーへのプロジェクト参照を作成します。BinRefフォルダー TFSにチェックインされます。

このアプローチのもう1つの利点は、BinRefが常にWebプロジェクトのルートレベルにあることです。私のプロジェクトが住んでいてC:\Projects\Marcie\SomeProjectCategory\ProjectA、そこにあるDLLへの参照を作成するC:\DLLsThatILikeと、参照は最終的に次のようになります

\..\..\..\NiceThing.dll

。プロジェクトファイルを保存することもできます。C:\ProjectAつまり、NiceThingへのプロジェクト参照がマシン上で爆発します。うまくいけば、人々はこのように参照をしていませんが、私はそれが起こるのを見ました。


2

変更要求プロセスの一環として、binディレクトリの内容をチェックインします。読み取り専用の問題を回避するために、コンテンツを別のフォルダーにコピーし、そこからチェックインします。当社の企業ポリシーでは、本番環境に移行するすべてのバイナリはソースとは別にチェックインする必要があります。これは最善の解決策ではありませんが、機能し、実稼働中の正確なファイルを提供します。


2
最初はこの答えを通り過ぎるつもりでしたが、それからもう少し考えました。私の会社では、災害復旧計画がありません(長すぎます)。これは、ゼロから開始する必要がある場合に役立ちます。バイナリをソース管理から外し、サーバー上に放り込めば完了です。
user7676

@ user7676-生産中のバージョン番号でコードを再コンパイルできます。しかし、DR計画がなく、ある種の災害に陥っている場合は、当然のことながら、より簡単で迅速に処理できます。PS。DR計画が必要です!!!
アリ

1

テキスト以外のファイルをソース管理にチェックインするのをためらいます。特に、開発者が生成する必要があるもの。また、画像やPDFなどの他のバイナリファイルを圧縮して、タグ/リリースごとに別の場所に保存することも好きです。


0

いいえ。ただし、社内のプロジェクト管理ツールは自動的に実行されるため、私には困ります。

私の解決策は、リリース内のすべてのファイルを書き込み可能としてマークし、TFSがファイルを無視するように不満を言うと、ビルドが失敗するという問題が発生しないようにすることです。


0

ソース管理にそれらを入力することは避けます。それらは冗長な情報であり、バイナリはそのリビジョンのソースコードによって構築できます。さらに、ソースコードは常に最新であり、ビルドはコミットされない場合があります。


0

別のプロジェクトからの.NET相互運用機能など、生成されたバイナリファイルを保存します。したがって、COMオブジェクトを作成するプロジェクトAがあり、そのCOMオブジェクトを.NET相互運用機能を介して使用する非常に疎なプロジェクトBで使用する場合、プロジェクトAから生成された相互運用機能をプロジェクトBにチェックインします。良いアイデアではありませんが、ビルド中にAFAIK Visual Studioが相互運用性を自動的に作成しないため、どこかに行かなければなりません。


-2

私の意見では、ソース管理にバイナリを保存しないことは、最も一般的な間違いの1つです。これらは、ソース、ビルドツールと共に保存、バージョン管理、ベースライン化/ラベル付けする必要があります。追跡不可能なソフトウェアを構築して自分に合った...


5
あなたはあなたの意見を述べましたが、それが良い習慣である理由について私たちに何の理由も与えていません。このテーマに興味のある人は、この答えからそれをバックアップすることなく、ほとんど価値を得られません。
ウォルター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.