更新 : 2007 年 11 月
分散システム デザイナでは、ソース コード管理内の SDM ドキュメントをマージまたは同時にチェックアウトすることは推奨されません。SDM ドキュメントは、.sdm ファイルと分散システム ダイアグラム ファイル (.ad, .sd, .dd, and .ldd) を含み、これらのドキュメントに含まれるメタデータの構造と複雑さが問題になります。Visual Studio 付属のソース コード管理アプリケーション (Team Foundation または Visual SourceSafe) を使用している場合は、排他的なチェックアウトが既定で有効になり、一度に 1 ユーザーだけがファイルをチェックアウトできます。
![]() |
---|
実装に対応したアプリケーションをアプリケーション ダイアグラムに実装すると、対応するプロジェクトが生成され、ソリューションに表示されます。実装されたアプリケーションの SDM 定義は、.sdm ファイルに格納され、対応するプロジェクトにインクルードされます。詳細については、「システム定義モデル (SDM) の概要」および「システム定義モデル (SDM) ドキュメントの相互関係」を参照してください。 |
アプリケーション ダイアグラムはマージしないでください。アプリケーションを実装すると、そのコードはアプリケーションのマスター定義となり、ダイアグラムとコードへの変更は、相互に同期されます。アプリケーションのコード ファイルと設定ファイルは SDM 定義のソースになるため、コード ファイルや設定ファイルをマージした結果が .sdm ファイル内の SDM 定義の最新バージョンになります。
![]() |
---|
Team Foundation では、保留中の変更を延期したり取り消したりできます。ただし、結果として SDM ドキュメントをマージすることが必要になる場合、この操作は推奨されません。たとえば、設定ファイルの設定や制約を変更した後、変更を反映せずに、さらに設定や制約を変更した場合は、SDM ドキュメントをマージする必要があります。詳細については、「バージョン管理シェルブセットの操作」を参照してください。 |
アプリケーション ダイアグラムを開いたり閉じたりするたびに、プロジェクト コードに関連する変更が .sdm ファイルとアプリケーション ダイアグラムとの間で同期されます。そのため、アプリケーション ダイアグラム ファイル (.ad) や .sdm ファイルとコードが同期していない場合は、アプリケーション ダイアグラムをいったん閉じてから開くと、同期できます。詳細については、「システム定義モデル (SDM) ドキュメントの同期」を参照してください。
![]() |
---|
SDM ドキュメントを削除するか、マージ操作により情報が喪失した場合、プレゼンテーション データや、.sdm ファイルだけに格納される SDM 情報などは、別のソースから再作成できないため、SDM ドキュメント内のデータは完全に失われます。ダイアグラムや .sdm ファイルをマージせずに、情報が失われるケースは、この場合だけです。そのため、.sdm ファイルだけに格納される定義は、複数の開発者が同時に操作、またはマージしないことを強く推奨します。たとえば、ASP.NET アプリケーションの Web コンテンツで、エンドポイントに関する SDM 情報を含む .sdm ファイルを削除してから新しく作成すると、そのエンドポイントはリバース エンジニアリングされません。詳細については、「アプリケーション ダイアグラムのトラブルシューティング」を参照してください。 |
アプリケーション プロジェクト ファイルの同時チェックアウトと変更
共有チェックアウトを有効にすると、開発チームでプロジェクト ファイルを同時に変更できますが、この方法は推奨しません。ただし、プロジェクト ファイルをチェックインするときに変更をマージする必要があるケースも考えられます。マージによる競合が発生した場合は、それを解決する必要があります。Team Foundation を使用している場合、詳細については、「方法 : チェックアウト設定を構成する」を参照してください。
一般的なケースとして、複数の開発者が共有プロジェクトで複数のソース コード ファイルを扱う場合があります。このプロジェクトは複数のソリューションで共有され、各ソリューションに独自のアプリケーション ダイアグラムが存在する可能性があります。ソリューションにアプリケーション ダイアグラムがあり、プロジェクトに .sdm ファイルが含まれている場合、プロジェクトのコード ファイルや設定ファイルを変更または同時変更するには、.sdm ファイルを更新する必要があります。そのため、プロジェクトをチェックインするときは、.sdm ファイルに対する同時変更をマージするか、一方の変更を破棄する必要があります。
たとえば、2 人の開発者が同じソリューションを開発しているケースを考えます。1 人の開発者は、ASP.NET アプリケーションの Web サービス クラス ファイルを作成するために、アプリケーション プロジェクトを含むソリューションをチェックアウトしたとします。この開発者は、ソリューションを構成するアプリケーション ダイアグラムなどのダイアグラムを開かずに、プロジェクト コードを記述できます。しかし、コード ファイルに加えた変更は、関連するダイアグラムに影響を与える可能性があります。この開発者がアプリケーション ダイアグラムを開くと、同期する必要があるダイアグラムと他のプロジェクト ファイルをチェックアウトするように求められます。
![]() |
---|
このとき、開発者がチェックアウトをキャンセルするか、なんらかの理由によってチェックアウトできないと、そのダイアグラムはロックされます。しかし、この開発者は引き続きコードを変更できます。詳細については、「アプリケーション ダイアグラムのトラブルシューティング」を参照してください。 |
ここで、別の開発者が同じソリューションの同じプロジェクトで作業する必要があり、使用しているソース コード管理ソリューションに基づいて、そのプロジェクトをチェックアウトするとします。しかし、この開発者は同じアプリケーションで別の Web サービスのクラス ファイルも作成しています。この開発者がアプリケーション ダイアグラムを表示して変更が反映されているかどうかを確認する場合、そのファイルは最初の開発者が既にチェックアウトしているため、読み取り専用で開かれます。しかし、2 番目の開発者はコード エディタを使用して引き続きコードを変更できます。
いずれか一方の開発者が変更を完了し、ファイルをソース コード管理に登録します。この時点で、同時にチェックアウトされたファイルのマージ競合を解決する必要があります。通常のケースでは、.sdm ファイルに加えられた変更が他の変更よりも優先され、アプリケーション ダイアグラムは、マージされたコードに基づいて .sdm ファイルと同期されます。しかし、このケースでは、2 番目の開発者が別の Web サービス クラス ファイルを作成しており、アプリケーション ダイアグラムはコードと同期した後に .sdm ファイルと同期するため、.sdm ファイルを優先的に受け入れても問題は生じません。
詳細については、「方法 : システム定義モデル (SDM) ドキュメントの競合を解決する」を参照してください。