1

私は現在、すべてのWebApp、WinServices、WebServices、コンソールアプリ、および共通ライブラリ(ビジネスエンティティ、カスタムコントロールなど)を格納する1つのslnファイルを持つソースツリーを使用しています。

このためのファイル構造は、次のように非常にフラットです。

+--Solution Folder
 +----Solution File
 +------WebApp1
 +------WcfService1
 +------WinService1
 +------CommonEntities
 +------WebControls1
 +------ThirdPartyAssemblies

Webアプリ、wcfサービスなどごとに個別のソリューションを作成する作業を開始しました。これにより、これらのソリューションに共通するプロジェクトを確認できます。

皆さんへの私の質問は、TFS内でファイルシステムを構造化して、共通のプロジェクトを全面的に使用できるようにする方法です。

作業項目とレポートのサイト/サービスごとの領域を定義する単一TFSプロジェクトのアプローチに従うことは非常に嬉しいですが、各プロジェクトの共通ライブラリを分岐することにあまり熱心ではありません。そうは言っても、皆さんはこれらの問題をどのように克服しましたか?

あるソリューションで共通のプロジェクトを作成し、コンパイルされたバイナリを他のソリューションで参照することも提案されていることを理解しています。私もこのアプローチにはあまり熱心ではありません。公平を期すために、これらが唯一の選択肢である場合、私は2つの悪のうちの小さい方を取りますが、他の人々がどのようにそれに取り組んでいるかを見たいと思っています。

4

2 に答える 2

3

プロジェクトの構造化に関する M.Radwan の回答の推奨事項では、CI (継続的インテグレーション) とゲート ビルドは考慮されていません。マイクロソフトがこのように推奨することに問題があります。CI およびゲート ビルドは、現在、ワークスペース マッピングによってトリガーされます。そのため、ソリューション ファイルは Main の下に配置しないでください。たとえば、すべてのソリューション ファイルがソリューション フォルダー レベルにあり、WebApp1、WcfService1、WinService1、Common エンティティなどに個別のゲート ビルドが設定されている場合、それらはすべて、メイン ソリューション フォルダーをマップし、クロークされた不要なフォルダー (維持するのが面倒な余分な作業) を効率化し、開発者がこれらのフォルダーのいずれかにコードをチェックインすると、たとえば WebApp1 を実行すると、実行するゲート ビルドを選択するダイアログが表示されます。このダイアログには、すべて同じ構造をマップするため、これらのゲートされたビルドがすべて表示されます。また、開発者は WinService1 が利用可能であるため選択することができ、WebApp1 のコードはそのビルドに含まれていないため、コードがそのビルドに失敗する可能性はありません。そのため、コンパイルされないコードがゲート ビルド システムを通過する可能性があります。

CI が設定されていて、いずれかのサブ フォルダー内の 1 つのファイルを変更すると、メインがマップされたすべてのビルド セットアップに対して CI ビルドがトリガーされるため、CI には適していません。あなたがすべきことは、各ソリューションファイルをそのコードとともに独自のディレクトリに置くことです。したがって、彼の例では、MyApp1 のソリューション ファイルは MyApp1 フォルダーにある必要があります。これは、独自のコードによってのみトリガーされる非常に小さく含まれたビルドを持つことができるということでした。

于 2013-01-21T19:20:59.077 に答える
2

私はあなたの主張を正確に感じることができないので、私はあなたのためにドアを開けようとします.Multiple Solution Approachを見ましたか?

ここに画像の説明を入力

より詳しい情報:

第 3 章 – ソース管理におけるプロジェクトとソリューションの構造化

ソース管理構造にはさまざまなアプローチがあります

Server-Side Structure を見ましたか?

$MyTeamProject1
     /Main                                                              Can contain solution (.sln) files    
            /Source
                        /MyApp1                                         Contains MyApp1.sln file
                                    /Source                             Contain folder for all source
                                                /ClassLibrary1          Contains ClassLibrary1.csproj
                                                /MyApp1Web              Contains Default.aspx
                                    /UnitTests                          Container folder for unit tests
                                                /ClassLibrary1Tests     Contains test project and code
                                                /MyApp1WebTests         Contains test project and code
                        /SharedBinaries                                 Shared binaries e.g. libraries
                        /SharedSource                                   Shared source code           
            /Docs                                                       Contains product documentation
            /Tests                                                      Container for tests
                        /FunctionalTests
                        /PerformanceTests
                        /SecurityTests /

より詳しい情報:

第 4 章 – Team Foundation ソース管理でのプロジェクトとソリューションの構造化

于 2013-01-21T16:16:34.430 に答える