Share via


方法: レイヤー図と照らし合わせて C コードおよび C++ コードを検証する

更新 : 2010 年 12 月

この Visual Studio 2010 Feature Pack では、Visual Studio 2010 Ultimate の C および C++ コードに対し、アーキテクチャ制約を適用してコードの開発を進めることができます。 このタスクを実行するには、レイヤーの検証を定期的に実行し、コードでの依存関係を、レイヤー図での依存関係と比較します。 レイヤー図では、システムのアーキテクチャを示し、名前空間、プロジェクト、およびその他の成果物を、論理グループ、抽象グループ、またはレイヤーにまとめることができます。 これらのレイヤーは、システムの主要コンポーネント、またはこれらの成果物によって実行される主要タスクを示します。 C または C++ コード用のレイヤー図を作成する手順は、.NET コードの場合と同じです。 詳細については、「方法: 成果物からレイヤー図を生成する」および「Visual Studio Feature Pack」を参照してください。

注意

この機能を使用するには、Visual Studio 2010 Feature Pack をインストールする必要があります。

バイナリ ファイルの場合、レイヤーの検証はバイナリ レベルのみで実行されます。 他の種類の成果物をレイヤー図にリンクすることもできますが、レイヤーの検証ではバイナリ レベルでの依存関係のみが分析されます。

レイヤー検証は、次のタスクを実行するうえでも役立ちます。

  • 既存のコードと目的の設計との間の違いを確認する。

  • 意図していたように整理されていない、または不用な依存関係があるコードを見つける。

  • 提案された変更によって影響を受ける可能性がある依存関係を見つける。

    たとえば、レイヤー図を変更して予測されるアーキテクチャの変更を表示した後、コードを検証して、影響を受ける依存関係を確認できます。

  • コードを別の設計にリファクターまたは移行する。

    コードを別のアーキテクチャに移動したときに作業が必要なコード、または依存関係を見つけます。

このトピックでは、C または C++ のコードに対してレイヤー検証を実行する前に満たす必要のある要件について説明します。

要件

  • Visual Studio で Visual C# がインストールされていることを確認します。

  • レイヤー図を含むモデリング プロジェクトを作成します

  • バイナリ ファイルの依存関係を検証するため、バイナリ ファイルをモデリング プロジェクトに追加します

  • Team Foundation ビルド で C および C++ プロジェクトを検証するには、「Team Foundation ビルドの要件」を参照してください。

これらの要件を満たした後は、.NET コードの場合と同じ手順を使用できます。 手順については、「方法: レイヤー図と照らし合わせて .NET コードを検証する」を参照してください。 モデリング オブジェクトおよび C または C++ コードから作成されるレイヤー図に関する問題については、「トラブルシューティング」を参照してください。

レイヤー図を含むモデリング プロジェクトを作成する

Visual Studio ソリューションには、レイヤー図のあるモデリング プロジェクトが含まれる必要があります。

モデリング プロジェクトを作成するには

  1. ソリューション エクスプローラーで、最上位レベルのソリューション ノードを右クリックし、[追加] をポイントして、[新しいプロジェクト] をクリックします。

  2. [新しいプロジェクトの追加] ダイアログ ボックスで、[インストールされたテンプレート][モデリング プロジェクト] をクリックし、[モデリング プロジェクト] をクリックします。

  3. プロジェクトの名前を変更し、[OK] をクリックします。

    Visual Studio で新しいモデリング プロジェクトがソリューションに追加されます。

  4. モデリング プロジェクトを保存します。

レイヤー図を作成するには

  1. [アーキテクチャ] メニューの [新しいダイアグラム] をクリックし、[新しいダイアグラムの追加] ダイアログ ボックスで [レイヤー図] をクリックします。

  2. 図の名前を変更し、モデリング プロジェクトを選択して、[OK] をクリックします。

    Visual Studio で空のレイヤー図がモデリング プロジェクトに追加され、図が表示されます。

  3. ソリューション エクスプローラーから、少なくとも 1 つの C または C++ プロジェクトをレイヤー図のサーフェイスにドラッグします。

    または

    アーキテクチャ エクスプローラーから、少なくとも 1 つのバイナリをレイヤー図のサーフェイスにドラッグします。

    どちらかの手順を実行すると、モデリング プロジェクトには次のアイテムも自動的に追加されます。

    • モデリング プロジェクトへのプロジェクト参照。

    • カスタム .targets ファイルをインポートして C または C++ コードのレイヤー検証を有効にするモデリング プロジェクト (.modelproj) ファイルへの <Import> 要素。

  4. 他のレイヤーを定義し、レイヤーと成果物をリンクし、これらの成果物間で目的の依存関係を記述します。

    詳細については、「方法: 成果物からレイヤー図を生成する」および「レイヤー図: ガイドライン」を参照してください。

  5. モデリング プロジェクトを保存します。

    重要

    レイヤー図のみを保存し、モデリング プロジェクトを保存しないで、ソリューションを閉じた場合は、C または C++ のプロジェクト参照を追加し、カスタム .targets ファイルをモデリング プロジェクトに手動でインポートする必要があります。 詳細については、「トラブルシューティング」を参照してください。

重要

Windows XP または Windows 2003 の Visual Studio 2010 Ultimate で C または C++ のコードからレイヤー図を作成すると、カスタムの Microsoft.VisualStudio.Progression.NativeProvider.targets ファイルをインポートするためのエントリが、絶対パスを使用してモデリング プロジェクト (.modelproj) ファイルに作成されます。 このため、Windows 7、Windows Vista、または Windows Server 2008 でソリューションを開こうとすると問題が発生することがあります。 Windows XP または Windows 2003 で Visual Studio 2010 Ultimate を実行している場合、Visual Studio 2010 Ultimate で作成したレイヤー図を Windows 7、Windows Vista、または Windows Server 2008 で開くことはできません。 この問題を解決する方法については、「トラブルシューティング」を参照してください。

バイナリ ファイルをモデリング プロジェクトに追加する

バイナリ ファイルの依存関係を検証する場合は、検証対象のバイナリ ファイルをモデリング プロジェクトに手動で追加する必要があります。 バイナリ ファイルをレイヤー図にドラッグしても自動的には追加されません。

バイナリ ファイルをモデリング プロジェクトに追加するには

  1. ソリューション エクスプローラーでモデリング プロジェクトを右クリックし、[既存項目の追加] をクリックします。

  2. [既存項目の追加] ダイアログ ボックスで、バイナリ ファイルを参照し、選択して、[OK] をクリックします。

    バイナリ ファイルがモデリング プロジェクトに表示されます。

  3. ソリューション エクスプローラーで、追加したバイナリ ファイルをクリックし、F4 キーを押して、[プロパティ] ウィンドウを開きます。

  4. 各バイナリ ファイルで、[ビルド アクション] プロパティを [検証] に設定します。

Team Foundation ビルドの要件

Team Foundation ビルド サーバーで C および C++ プロジェクトを検証するには、以下の手順に従う必要があります。

  1. プロジェクトをコンパイルするには、以下の項目がサーバーにインストールされていることを確認します。

    ヒント

    Visual Studio 2010 Ultimate がサーバーにインストールされている場合は、手順 2. と 3. を実行する代わりに、Feature Pack をサーバーにインストールできます。 そうでない場合、...\<Visual Studio Feature Pack 名>\<Visual Studio Feature Pack バージョン番号> フォルダーがサーバーに存在しない場合は、フォルダーの作成が必要な場合があります。 他の場所に Feature Pack をインストールしたのでない場合、%LocalAppData% は通常、<ドライブ名>:\Users\<ユーザー名>\AppData\Local です。 Windows XP または Windows 2003 では、%LocalAppData% の代わりに %AppData% を使用します。

  2. Visual Studio 2010 Visualization and Modeling Feature Pack がインストールされている場合:

    Microsoft.VisualStudio.Progression.NativeProvider.targets ファイルを、Feature Pack インストールの次の場所から、サーバー上の同じ場所にコピーします。

    %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<Visual Studio Feature Pack 名>\1.0

    Visual Studio 2010 Feature Pack 2 がインストールされている場合:

    Microsoft.VisualStudio.Progression.NativeProvider.targets ファイルを Feature Pack インストールの次の場所からコピーします。

    ...\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<Visual Studio Feature Pack 名>\<Visual Studio Feature Pack バージョン番号>

    コピー先はサーバー上の次の場所です。

    ...\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Modeling\<Visual Studio Feature Pack 名>\1.0

  3. インストールされている Feature Pack のバージョンに応じて、次の Feature Pack インストール場所のどちらかから、Microsoft.VisualStudio.Progression.NativeProvider.dll ファイルをコピーします。

    • Visual Studio 2010 Visualization and Modeling Feature Pack の場合: %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<Visual Studio Feature Pack 名>\1.0

    • Visual Studio 2010 Feature Pack 2 の場合: ...\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<Visual Studio Feature Pack 名>\<Visual Studio Feature Pack バージョン番号>

    コピー先はサーバー上の次の場所です。

    ...\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Providers

トラブルシューティング

モデリング プロジェクトを保存せずに、レイヤー図のみを保存してソリューションを閉じた場合は、以下の手順に従って C または C++ のプロジェクト参照を追加し、カスタムの .targets ファイルをモデリング プロジェクトに手動でインポートする必要があります。

タスク

手順

C または C++ プロジェクト参照を追加する

  1. ソリューション エクスプローラーで、レイヤー図が含まれているモデリング プロジェクトを右クリックし、[参照の追加] をクリックします。

    または

    モデリング プロジェクトで、[レイヤー参照] フォルダーを右クリックし、[参照の追加] をクリックします。

  2. [参照の追加] ダイアログ ボックスで、検証するプロジェクトを選択し、[OK] をクリックします。

    [レイヤー参照] フォルダーにプロジェクト参照が表示されます。

カスタムの .targets ファイルをインポートする

  1. ソリューション エクスプローラーで、モデリング プロジェクト ノードを右クリックし、[プロジェクトのアンロード] をクリックします。

  2. モデリング プロジェクト ノードを右クリックし、[<モデリング プロジェクト名>.modelproj の編集] をクリックします。

  3. <モデリング プロジェクト名>.modelproj ファイルで、次の <Import> 要素を検索します。

    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\ArchitectureTools\Microsoft.VisualStudio.TeamArchitect.ModelingProject.targets" />

    この <Import> 要素の下に、次の <Import> 要素を追加します。

    Visual Studio 2010 Visualization and Modeling Feature Pack がインストールされている場合:

    <Import Project="$(LocalAppData)\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<InsertVisualStudioFeaturePackName>\1.0\Microsoft.VisualStudio.Progression.NativeProvider.targets" />

    メモメモ
    %LocalAppData% は、通常は <ドライブ名>:\Users\<ユーザー名>\AppData\Local です。Windows XP または Windows 2003 では、%LocalAppData% の代わりに %AppData% を使用します。Feature Pack を別の場所にインストールした場合は、代わりにその場所を使用します。Microsoft.VisualStudio.Progression.NativeProvider.targets ファイルを、Feature Pack のインストール場所から、モデリング プロジェクトが格納されているフォルダーにコピーしてもかまいません。

    Visual Studio 2010 Feature Pack 2 がインストールされている場合:

    <Import Project="…$\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<InsertVisualStudioFeaturePackName>\<InsertVisualStudioFeaturePackVersionNumber>\Microsoft.VisualStudio.Progression.NativeProvider.targets" />

  4. .modelproj ファイルを保存して閉じます。

  5. モデリング プロジェクト ノードを右クリックし、[プロジェクトの再読み込み] をクリックします。

Windows XP または Windows 2003 の Visual Studio 2010 Ultimate で C または C++ のコードからレイヤー図を作成すると、カスタムの Microsoft.VisualStudio.Progression.NativeProvider.targets ファイルをインポートするためのエントリが、絶対パスを使用してモデリング プロジェクト (.modelproj) ファイルに作成されます。 このため、Windows 7、Windows Vista、または Windows Server 2008 でソリューションを開こうとすると問題が発生することがあります。 Windows XP または Windows 2003 で Visual Studio 2010 Ultimate を実行している場合、Visual Studio 2010 Ultimate で作成したレイヤー図を Windows 7、Windows Vista、または Windows Server 2008 で開くことはできません。

この問題を解決するには、次のどちらかの回避策を使用します。

  1. Microsoft.VisualStudio.Progression.NativeProvider.targets ファイルを、次の場所から、モデリング プロジェクトが格納されているフォルダーにコピーします。

    Visual Studio 2010 Visualization and Modeling Feature Pack がインストールされている場合:

    %LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\<Visual Studio Feature Pack 名>\1.0

    ヒント

    他の場所に Feature Pack をインストールしたのでない場合、%LocalAppData% は通常、<ドライブ名>:\Users\<ユーザー名>\AppData\Local です。 Windows XP または Windows 2003 では、%LocalAppData% の代わりに %AppData% を使用します。

    Visual Studio 2010 Feature Pack 2 がインストールされている場合:

    ...\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\<Visual Studio Feature Pack 名>\<Visual Studio Feature Pack バージョン番号>

  2. .modelproj ファイルで、.targets ファイルに対する <Import> 要素を、.targets ファイルの絶対パスを相対パスに置き換えることで更新します。 次に例を示します。

    <Import Project="Microsoft.VisualStudio.Progression.NativeProvider.targets" />
    

    重要

    バージョン管理を使用している場合は、.targets ファイルをバージョン管理にチェックインする必要があります。

または

  1. Microsoft.VisualStudio.Progression.NativeProvider.dll ファイルのインストール パスを表す新しい環境変数を作成します。

  2. この変数を使用して .targets ファイルをインポートします。

    たとえば、.targets ファイルが格納されている場所を参照する "NativeProviderTargetPath" のような環境変数を作成できます。 その後、<Import> 要素を次のように更新します。

    <Import Project="$(NativeProviderTargetPath)\Microsoft.VisualStudio.Progression.NativeProvider.targets" />
    

    重要

    異なるオペレーティング システムで環境変数が正しく設定されていることを確認してください。

参照

処理手順

方法: 成果物からレイヤー図を生成する

方法: レイヤー図と照らし合わせて .NET コードを検証する

概念

レイヤー図: ガイドライン

履歴の変更

日付

履歴

理由

2010 年 12 月

Visual Studio 2010 Feature Pack 2 用に更新。

情報の拡充