Share via


配置後に問題を診断するためのリリースのセットアップ

IntelliTrace を使用して、ASP.NET Web アプリの配置後に問題を診断するには、リリースについてのビルド情報を含めます。こうすることで、Visual Studio が、IntelliTrace ログをデバッグするために必要な正しいソース ファイルとシンボル ファイルを自動的に検索できるようになります。

また、Microsoft Monitoring Agent を使用して IntelliTrace を制御している場合は、Web サーバー上でアプリケーション パフォーマンスの監視をセットアップする必要もあります。 これにより、アプリがイベントを実行して IntelliTrace ログ ファイルに保存する間に、診断イベントが記録されます。 次に Visual Studio Ultimate でイベントを確認し、イベントが発生したコードに移動できます。さらに、その時点で記録された値を確認し、実行されたコード内を前後に移動できます。 問題を見つけて解決したら、リリースをビルド、リリース、および監視するサイクルを繰り返して、将来発生する可能性がある問題をさらに早い段階で速やかに解決できます。

コーディング、ビルド、リリース、モニター、診断、修正

要件:

  • ビルドを設定するための Visual Studio 2013 または Team Foundation Server 2013、2012、2010

  • アプリを監視して診断データを記録するための Microsoft 監視エージェント

  • 診断データを確認して IntelliTrace でコードをデバッグするための Visual Studio Ultimate 2013

手順 1: リリースにビルド情報を含める

ビルド プロセスを設定して Web プロジェクトのビルド マニフェスト (BuildInfo.config ファイル) を作成し、このマニフェストをリリースに含めます。 このマニフェストには、特定のビルドを作成するために使用されたプロジェクト、ソース管理、およびビルド システムに関する情報が含まれます。 この情報は、IntelliTrace ログを開いて記録されたイベントを確認した後に、Visual Studio が対応するソースとシンボルを見つけるのに役立ちます。

Team Foundation Server を使用して自動ビルドのビルド マニフェストを作成します。

Team Foundation バージョン管理と Git のいずれを使用するにしても、これらの手順に従います。

Team Foundation Server 2013

ビルド定義を設定して、ソース、ビルド、およびシンボルの場所をビルド マニフェスト (BuildInfo.config ファイル) に追加します。 Team Foundation ビルドは自動的にこのファイルを作成し、そのファイルをプロジェクトの出力フォルダーに配置します。

  1. ビルド定義を編集するか、新しいビルド定義を作成します。

    TFS 2013 でビルド定義を表示する

  2. 既定のテンプレート (TfvcTemplate.12.xaml) または独自のカスタム テンプレートを選択します。

    ビルド プロセス テンプレートの選択 - TFS 2013

  3. ソースのインデックスが自動的に作成されるように、シンボル (PDB) ファイルの保存場所を指定します。

    カスタム テンプレートを使用する場合は、ソースにインデックスを付けるアクティビティがカスタム テンプレートに含まれていることを確認します。 後の手順で、MSBuild 引数を追加して、シンボル ファイルの保存場所を指定できます。

    ビルド定義でシンボル パスをセットアップする (TFS 2013)

    シンボルの詳細については、「シンボル データを発行する」を参照してください。

  4. この MSBuild 引数を追加して、TFS とシンボルの場所をビルド マニフェスト ファイルに含めます。

    /p:IncludeServerNameInBuildInfo=True

    Web サーバーにアクセスできるすべてのユーザーが、ビルド マニフェスト内のこれらの場所を確認できます。 ソース サーバーがセキュリティで保護されていることを確認してください。

  5. カスタム テンプレートを使用する場合は、この MSBuild 引数を追加して、シンボル ファイルを保存する場所を指定します。

    /p:BuildSymbolStorePath=<シンボルへのパス>

    ビルド定義にビルド サーバー情報を含める (TFS 2013)

    以下の行を Web プロジェクト ファイル (.csproj または .vbproj) に追加します。

    <!-- Import the targets file. Change the folder location as necessary. -->
       <Import Project=""$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\BuildInfo\Microsoft.VisualStudio.ReleaseManagement.BuildInfo.targets" />
    
  6. 新しいビルドを実行します。

手順 2: アプリをリリースする

Team Foundation Server 2012 または 2010

プロジェクトのビルド マニフェスト (BuildInfo.config ファイル) を自動的に作成し、プロジェクトの出力フォルダーに配置するには、次の手順を実行します。 このファイルは出力フォルダーで "ProjectName.BuildInfo.config" と表示されますが、アプリの発行後に配置フォルダーで "BuildInfo.config" という名前に変更されます。

  1. Team Foundation ビルド サーバーに、Visual Studio 2013 (任意のエディション) をインストールします。

  2. ビルド定義で、シンボル保存場所を指定します。その結果、ソースのインデックスが自動的に作成されます。

    カスタム テンプレートを使用する場合は、ソースにインデックスを付けるアクティビティがカスタム テンプレートに含まれていることを確認します。

  3. 次の MSBuild 引数を、ビルド定義に追加します。

    • /p:VisualStudioVersion=12.0

    • /p:MSBuildAssemblyVersion=12.0

    • /tv:12.0

    • /p:IncludeServerNameInBuildInfo=True

    • /p:BuildSymbolStorePath=<シンボルへのパス>

  4. 新しいビルドを実行します。

手順 2: アプリをリリースする

Visual Studio 2013 を使用して手動ビルドのビルド マニフェストを作成する

プロジェクトのビルド マニフェスト (BuildInfo.config ファイル) を自動的に作成し、プロジェクトの出力フォルダーに配置するには、次の手順を実行します。 このファイルは出力フォルダーで "ProjectName.BuildInfo.config" と表示されますが、アプリの発行後に配置フォルダーで "BuildInfo.config" という名前に変更されます。

  1. [ソリューション エクスプローラー] で、Web プロジェクトをアンロードします。

  2. プロジェクト ファイル (.csproj、.vbproj) を開きます。 次の行を追加します。

    <!-- **************************************************** -->
    <!-- Build info -->
    <PropertyGroup>
       <!-- Generate the BuildInfo.config file -->
       <GenerateBuildInfoConfigFile>True</GenerateBuildInfoConfigFile>
       <!-- Include server name in build info --> 
       <IncludeServerNameInBuildInfo>True</IncludeServerNameInBuildInfo> 
       <!-- Include the symbols path so Visual Studio can find the matching deployed code when you start debugging. -->
       <BuildSymbolStorePath><path to symbols></BuildSymbolStorePath>
    </PropertyGroup>
    <!-- **************************************************** -->
    
  3. 更新されたプロジェクト ファイルをチェックインします。

  4. 新しいビルドを実行します。

手順 2: アプリをリリースする

MSBuild.exe を使用して手動ビルドのビルド マニフェストを作成する

ビルドの実行時に次のビルド引数を追加します。

/p:GenerateBuildInfoConfigFile=True

/p:IncludeServerNameInBuildInfo=True

/p:BuildSymbolStorePath=<シンボルへのパス>

手順 2: アプリをリリースする

アプリを配置するためのビルド プロセスにより作成された Web.Deploy パッケージを使用する場合、ビルド マニフェストの名前は "ProjectName.BuildInfo.config" から "BuildInfo.config" へ自動的に変更され、Web サーバー上にあるアプリの Web.config ファイルと同じフォルダーに配置されます。

他の方法を使用してアプリを配置する場合は、ビルド マニフェストの名前が "ProjectName.BuildInfo.config" から "BuildInfo.config" へ変更され、Web サーバー上にあるアプリの Web.config ファイルと同じフォルダーに配置されていることを確認します。

手順 3: アプリを監視する

Web サーバー上でアプリケーション パフォーマンスの監視を設定して、アプリの問題の監視、診断イベントの記録、および IntelliTrace ログ ファイルへのイベントの保存ができるようにします。 「Monitor your release for deployment problems (配置の問題に関するリリースの監視)」を参照してください。

手順 4: 問題を見つける

記録されたイベントを確認し、IntelliTrace を使用してコードをデバッグするには、開発用コンピューターまたは別のコンピューターに Visual Studio Ultimate 2013 がインストールされている必要があります。 問題の診断に役立つ CodeLens、デバッガー マップ、コード マップなどのツールを使用することもできます。

IntelliTrace ログと対応するソリューションを開く

  1. IntelliTrace ログ (.iTrace ファイル) を Visual Studio Ultimate 2013 から開きます。 同じコンピューターに Visual Studio Ultimate 2013 がある場合は、ファイルをダブルクリックするだけです。

  2. [ソリューションを開く] を選択すると、対応するソリューションまたはプロジェクトが自動的に開きます (そのプロジェクトがソリューションの一部として組み込まれていない場合)。 配置したアプリに関する情報が IntelliTrace ログ内にありません。

    Visual Studio では、対応するソリューションまたはプロジェクトが開くと、保留中のすべての変更が自動的にシェルブされます。 このシェルブセットの詳細情報を取得するには、[出力] ウィンドウまたはチーム エクスプローラーを確認します。

    変更する前に、適切なソースがあることを確認してください。 分岐を使用する場合、Visual Studio が対応するソースを検出した分岐 (リリース ブランチなど) とは異なる分岐で作業する可能性があります。

    IntelliTrace ログからソリューションを開く

    このソリューションまたはプロジェクトに対するワークスペースを既に割り当てた場合は、Visual Studio によってそのワークスペースが選択され、検出されたソースが配置されます。

    ソース管理から、マップされたワークスペースを開く

    それ以外の場合は、別のワークスペースを選択するか、新しいワークスペースを作成します。 Visual Studio では、分岐全体がこのワークスペースに割り当てられます。

    ソース管理から開く - 新しいワークスペースの作成

    特定のマッピングを備えたワークスペースや、コンピューターとは名前が異なるワークスペースを作成するには、[管理] を選択します。

    選択したワークスペースが適切でないというメッセージが Vidual Studio によって表示されるのはなぜですか。

    ここで他にできること

パフォーマンスの問題を診断する

  1. [パフォーマンス違反] で、記録されたパフォーマンス イベント、総実行時間、およびその他のイベント情報を確認します。 その後、特定のパフォーマンス イベントの発生時に呼び出されたメソッドをさらに掘り下げます。

    パフォーマンス イベント詳細を表示する

    イベントをダブルクリックするだけでもかまいません。

  2. イベント ページで、これらの呼び出しの実行時間を確認します。 実行ツリーで、時間がかかっている呼び出しを見つけます。

    複数の呼び出しが入れ子などの形式で存在する場合は、最も低速な呼び出しが独自のセクションに表示されます。

    その呼び出しを展開して、その時点で記録された、入れ子になったすべての呼び出しと値を確認します。 その後、その呼び出しからデバッグを開始します。

    メソッド呼び出しからデバッグを開始する

    呼び出しをダブルクリックするだけでもかまいません。

    アプリケーション コードにメソッドが含まれる場合、Visual Studio はそのメソッドに移動します。

    パフォーマンス イベントからアプリケーション コードに移動する

    これで、他の記録された値、つまり呼び出し履歴を確認したり、コードをステップ実行したりできます。また、IntelliTrace ウィンドウを使用して、パフォーマンス イベントの発生時に呼び出されたその他のメソッド間を "時間内に" 前後に移動することもできますIntelliTrace ログ内の他のイベントと情報について ここで他にできること Want more information about performance events? (パフォーマンス イベントに関する詳細)

例外の診断

  • [例外データ] では、記録された例外イベントとその種類、メッセージ、およびその例外がいつ発生したかを確認できます。 コードをさらに掘り下げるには、例外グループの最新のイベントからデバッグを開始します。

    例外イベントからデバッグを開始する

    イベントをダブルクリックするだけでもかまいません。

    例外がアプリケーション コードで発生した場合、Visual Studio は例外が発生した場所に移動します。

    例外イベントからアプリケーション コードに移動する

    これで、他の記録された値、つまり呼び出し履歴を確認したり、IntelliTrace ウィンドウを使用して、記録されたその他のイベント間を "時間内に" 前後に移動できます。また、関連するコードや、その時点で記録された値の間も前後に移動できます。 IntelliTrace ログ内の他のイベントと情報について

ここで他にできること

Q & A

Q: プロジェクト、ソース管理、ビルド、およびシンボルに関する情報をリリースに含めるのはなぜですか。

Visual Studio はこの情報を使用して、デバッグしようとするリリースに対応するソリューションやソースを検索します。 IntelliTrace ログを開き、イベントを選択してデバッグを開始した後に、Visual Studio はシンボルを使用して検索を実行し、イベントが発生したコードを表示します。 それから、記録された値を確認し、実行中のコード内を前後に移動できます。

TFS を使用しており、この情報がビルド マニフェスト (BuildInfo.config ファイル) ではない場合、Visual Studio は対応するソースとシンボルを現在接続されている TFS 上で検索します。 Visual Studio が適切な TFS または対応するソースを見つけられない場合、他の TFS を選択するように求めるプロンプトが表示されます。

Q: 配置したアプリに関する情報が IntelliTrace ログ内にありません。なぜこのようなことが起きたのですか。どうしたらよいですか。

この問題は、開発用コンピューターから配置した場合や配置中に TFS に接続していない場合に発生する可能性があります。

  1. プロジェクトの配置フォルダーに移動します。

  2. ビルド マニフェスト (BuildInfo.config ファイル) を検索して開きます。

  3. ファイル内に以下の必要な情報があることを確認します。

フィールド

指定内容

ProjectName

Visual Studio 内のプロジェクトの名前。 次に例を示します。

<ProjectName>FabrikamFiber.Extranet.Web</ProjectName>

SourceControl

ソース管理システムに関する情報と以下の必須プロパティ:

  • TFS

    • ProjectCollectionUri: Team Foundation Server およびプロジェクト コレクションの URI

    • ProjectItemSpec: アプリのプロジェクト ファイル (.csproj または .vbproj) へのパス

    • ProjectVersionSpec: プロジェクトのバージョン

    次に例を示します。

    <SourceControl type="TFS">
       <TfsSourceControl>
          <ProjectCollectionUri>http://fabrikamfiber:8080/tfs/FabrikamFiber</ProjectCollectionUri>
          <ProjectItemSpec>$/WorkInProgress/FabrikamFiber/FabrikamFiber.CallCenter/FabrikamFiber.Web/FabrikamFiber.Web.csproj</ProjectItemSpec>
          <ProjectVersionSpec>LFabrikamFiber_BuildAndPublish_20130813@$/WorkInProgress</ProjectVersionSpec>
       </TfsSourceControl>
    </SourceControl>
  • Git

    • GitSourceControl: GitSourceControl スキーマの場所

    • RepositoryUrl: Team Foundation Server、プロジェクト コレクション、および Git リポジトリの URI

    • ProjectPath: アプリのプロジェクト ファイル (.csproj or .vbproj) へのパス

    • CommitId: コミットの ID

    次に例を示します。

    <SourceControl type="Git"> 
       <GitSourceControl xmlns="https://schemas.microsoft.com/visualstudio/deploymentevent_git/2013/09">
          <RepositoryUrl>http://gittf:8080/tfs/defaultcollection/_git/FabrikamFiber</RepositoryUrl>
          <ProjectPath>/FabrikamFiber.CallCenter/FabrikamFiber.Web/FabrikamFiber.Web.csproj</ProjectPath>
          <CommitId>50662c96502dddaae5cd5ced962d9f14ec5bc64d</CommitId>
       </GitSourceControl>
    </SourceControl>

ビルド

ビルド システムに関する情報 ("TeamBuild" または "MSBuild") と以下の必須プロパティ:

  • BuildLabel (TeamBuild の場合): ビルドの名前と番号。 このラベルは配置イベントの名前としても使用されます。 ビルド番号の詳細については、「完了したビルドにわかりやすい名前を付けるためにビルド番号を使用」を参照してください。

  • SymbolPath (推奨): セミコロンで区切ったシンボル (PDB ファイル) の場所に関する URI の一覧。 これらの URI は、URL または UNC のいずれかです。 これにより、Visual Studio は対応するシンボルを容易に検索でき、デバッグに役立ちます。

  • BuildReportUrl (TeamBuild の場合): TFS でのビルド レポートの場所

  • BuildId (TeamBuild の場合): TFS でのビルドの詳細の URI。 この URI は配置イベントの ID としても使用されます。 TeamBuild を使用していない場合は、この ID は一意である必要があります。

  • BuiltSolution: 対応するソリューションを検索して開くために Visual Studio が使用するソリューション ファイルへのパス。 これは、SolutionPath MsBuild プロパティの内容です。

次に例を示します。

  • TFS

    <Build type="TeamBuild">
       <MsBuild>
          <BuildLabel kind="label">FabrikamFiber_BuildAndPublish_20130813.1</BuildLabel>
          <SymbolPath>\\fabrikamfiber\FabrikamFiber.CallCenter\Symbols</SymbolPath>
          <BuildReportUrl kind="informative, url" url="http://fabrikamfiber:8080/tfs/FabrikamFiber/_releasePipeline/FindRelease?buildUri=fabrikamfiber%3a%2f%2f%2fBuild%2fBuild%2f448">Build Report Url</BuildReportUrl>
          <BuildId kind="id">1c4444d2-518d-4673-a590-dce2773c7744,fabrikamfiber:///Build/Build/448</BuildId>
          <BuiltSolution>$/WorkInProgress/FabrikamFiber/FabrikamFiber.CallCenter/FabrikamFiber.CallCenter.sln</BuiltSolution>
       </MsBuild>
    </Build>
  • Git

    <Build type="MSBuild"> 
       <MSBuild>
          <SymbolPath>\\gittf\FabrikamFiber.CallCenter\Symbols</SymbolPath>
          <BuiltSolution>/FabrikamFiber.CallCenter/FabrikamFiber.CallCenter.sln</BuiltSolution>
       </MSBuild>
    </Build>

Q: 選択したワークスペースが適切でないというメッセージが Vidual Studio によって表示されるのはなぜですか。

A: 選択したワークスペースのソース コントロール フォルダーとローカル フォルダーの間にマッピングがありません。 このワークスペースのマッピングを作成するには、[管理] を選択します。 それ以外の場合は、既に割り当てられているワークスペースを選択するか、新しいワークスペースを作成します。

ソース管理から開く (ワークスペースがマップされていない)

Q: チーム コレクションまたは別のコレクションを選択するまで続行できないのはなぜですか。

A: これは次の理由によって発生する場合があります。

  • Visual Studio が TFS に接続されていない。

    ソース管理から開く - 接続されていない

  • Visual Studio が、現在のチーム コレクションでソリューションまたはプロジェクトを見つけられなかった。

    Visual Studio が対応するソースを検索できる場所をビルド マニフェスト ファイル (<ProjectName>.BuildInfo.config) で指定していないと、Visual Studio は現在接続されている TFS を使用して、対応するソリューションまたはプロジェクトを検索します。 対応するソースが現在のチーム コレクションにない場合、Visual Studio は、別のチーム コレクションに接続するように求めるメッセージを表示します。

  • Visual Studio が、ビルド マニフェスト ファイル (<ProjectName>.BuildInfo.config) で指定されたコレクションでソリューションまたはプロジェクトを見つけられなかった。

    新しい TFS に移行したため、対応するソースが指定 TFS にない、あるいは TFS 自体が存在しない可能性があります。 指定された TFS が存在しない場合、Visual Studio は 約 1 分後にタイムアウトになり、別のコレクションに接続するように求めるメッセージが表示される可能性があります。 操作を続行するには、正しい TFS サーバーに接続します。

    ソース管理から開く - 移行済み

Q: ワークスペースとは何ですか。

A: ワークスペースにはソースのコピーが格納されるので、作業をチェックインする前に、そのコピーを別に開発およびテストできます。 検出されたソリューションまたはプロジェクトに特別に割り当てられたワークスペースがまだない場合、Visual Studio では、使用可能なワークスペースを選択するか、既定のワークスペースと同じコンピューター名で新しいワークスペースを作成するように求めるメッセージが表示されます。

Q: 信頼されていないシンボルに関する次のメッセージが表示されるのはなぜですか。

信頼されていないシンボル パスでデバッグするか?

A: このメッセージは、ビルド マニフェスト ファイル (<ProjectName>.BuildInfo.config) のシンボル パスが、信頼されたシンボル パスの一覧に含まれない場合に表示されます。 このパスをシンボル パスの一覧に追加するには、デバッガー オプションを使用します。