配置後に問題を診断するためのリリースのセットアップ
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 ビルドは自動的にこのファイルを作成し、そのファイルをプロジェクトの出力フォルダーに配置します。
既定のテンプレート (TfvcTemplate.12.xaml) または独自のカスタム テンプレートを選択します。
ソースのインデックスが自動的に作成されるように、シンボル (PDB) ファイルの保存場所を指定します。
カスタム テンプレートを使用する場合は、ソースにインデックスを付けるアクティビティがカスタム テンプレートに含まれていることを確認します。 後の手順で、MSBuild 引数を追加して、シンボル ファイルの保存場所を指定できます。
シンボルの詳細については、「シンボル データを発行する」を参照してください。
この MSBuild 引数を追加して、TFS とシンボルの場所をビルド マニフェスト ファイルに含めます。
/p:IncludeServerNameInBuildInfo=True
Web サーバーにアクセスできるすべてのユーザーが、ビルド マニフェスト内のこれらの場所を確認できます。 ソース サーバーがセキュリティで保護されていることを確認してください。
カスタム テンプレートを使用する場合は、この MSBuild 引数を追加して、シンボル ファイルを保存する場所を指定します。
/p:BuildSymbolStorePath=<シンボルへのパス>
以下の行を 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" />
新しいビルドを実行します。
手順 2: アプリをリリースする
Team Foundation Server 2012 または 2010
プロジェクトのビルド マニフェスト (BuildInfo.config ファイル) を自動的に作成し、プロジェクトの出力フォルダーに配置するには、次の手順を実行します。 このファイルは出力フォルダーで "ProjectName.BuildInfo.config" と表示されますが、アプリの発行後に配置フォルダーで "BuildInfo.config" という名前に変更されます。
Team Foundation ビルド サーバーに、Visual Studio 2013 (任意のエディション) をインストールします。
ビルド定義で、シンボル保存場所を指定します。その結果、ソースのインデックスが自動的に作成されます。
カスタム テンプレートを使用する場合は、ソースにインデックスを付けるアクティビティがカスタム テンプレートに含まれていることを確認します。
次の MSBuild 引数を、ビルド定義に追加します。
/p:VisualStudioVersion=12.0
/p:MSBuildAssemblyVersion=12.0
/tv:12.0
/p:IncludeServerNameInBuildInfo=True
/p:BuildSymbolStorePath=<シンボルへのパス>
新しいビルドを実行します。
手順 2: アプリをリリースする
Visual Studio 2013 を使用して手動ビルドのビルド マニフェストを作成する
プロジェクトのビルド マニフェスト (BuildInfo.config ファイル) を自動的に作成し、プロジェクトの出力フォルダーに配置するには、次の手順を実行します。 このファイルは出力フォルダーで "ProjectName.BuildInfo.config" と表示されますが、アプリの発行後に配置フォルダーで "BuildInfo.config" という名前に変更されます。
[ソリューション エクスプローラー] で、Web プロジェクトをアンロードします。
プロジェクト ファイル (.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> <!-- **************************************************** -->
更新されたプロジェクト ファイルをチェックインします。
新しいビルドを実行します。
手順 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 ログと対応するソリューションを開く
IntelliTrace ログ (.iTrace ファイル) を Visual Studio Ultimate 2013 から開きます。 同じコンピューターに Visual Studio Ultimate 2013 がある場合は、ファイルをダブルクリックするだけです。
[ソリューションを開く] を選択すると、対応するソリューションまたはプロジェクトが自動的に開きます (そのプロジェクトがソリューションの一部として組み込まれていない場合)。 配置したアプリに関する情報が IntelliTrace ログ内にありません。
Visual Studio では、対応するソリューションまたはプロジェクトが開くと、保留中のすべての変更が自動的にシェルブされます。 このシェルブセットの詳細情報を取得するには、[出力] ウィンドウまたはチーム エクスプローラーを確認します。
変更する前に、適切なソースがあることを確認してください。 分岐を使用する場合、Visual Studio が対応するソースを検出した分岐 (リリース ブランチなど) とは異なる分岐で作業する可能性があります。
このソリューションまたはプロジェクトに対するワークスペースを既に割り当てた場合は、Visual Studio によってそのワークスペースが選択され、検出されたソースが配置されます。
それ以外の場合は、別のワークスペースを選択するか、新しいワークスペースを作成します。 Visual Studio では、分岐全体がこのワークスペースに割り当てられます。
特定のマッピングを備えたワークスペースや、コンピューターとは名前が異なるワークスペースを作成するには、[管理] を選択します。
選択したワークスペースが適切でないというメッセージが Vidual Studio によって表示されるのはなぜですか。
ここで他にできること
パフォーマンスの問題を診断する
[パフォーマンス違反] で、記録されたパフォーマンス イベント、総実行時間、およびその他のイベント情報を確認します。 その後、特定のパフォーマンス イベントの発生時に呼び出されたメソッドをさらに掘り下げます。
イベントをダブルクリックするだけでもかまいません。
イベント ページで、これらの呼び出しの実行時間を確認します。 実行ツリーで、時間がかかっている呼び出しを見つけます。
複数の呼び出しが入れ子などの形式で存在する場合は、最も低速な呼び出しが独自のセクションに表示されます。
その呼び出しを展開して、その時点で記録された、入れ子になったすべての呼び出しと値を確認します。 その後、その呼び出しからデバッグを開始します。
呼び出しをダブルクリックするだけでもかまいません。
アプリケーション コードにメソッドが含まれる場合、Visual Studio はそのメソッドに移動します。
これで、他の記録された値、つまり呼び出し履歴を確認したり、コードをステップ実行したりできます。また、IntelliTrace ウィンドウを使用して、パフォーマンス イベントの発生時に呼び出されたその他のメソッド間を "時間内に" 前後に移動することもできます。 IntelliTrace ログ内の他のイベントと情報について ここで他にできること Want more information about performance events? (パフォーマンス イベントに関する詳細)
例外の診断
[例外データ] では、記録された例外イベントとその種類、メッセージ、およびその例外がいつ発生したかを確認できます。 コードをさらに掘り下げるには、例外グループの最新のイベントからデバッグを開始します。
イベントをダブルクリックするだけでもかまいません。
例外がアプリケーション コードで発生した場合、Visual Studio は例外が発生した場所に移動します。
これで、他の記録された値、つまり呼び出し履歴を確認したり、IntelliTrace ウィンドウを使用して、記録されたその他のイベント間を "時間内に" 前後に移動できます。また、関連するコードや、その時点で記録された値の間も前後に移動できます。 IntelliTrace ログ内の他のイベントと情報について
ここで他にできること
このコードのさらに詳細な情報を入手します。 エディターから離れずに、このコードの参照、変更履歴、関連するバグ、作業項目、コード レビュー、または単体テストを検索するには、エディターの CodeLens インジケーターを使用します。
デバッグ中にコード内の位置を割り当てます。デバッグ セッション中に呼び出されたメソッドを視覚的に追跡するには、呼び出し履歴を割り当てます。
Q & A
Q: プロジェクト、ソース管理、ビルド、およびシンボルに関する情報をリリースに含めるのはなぜですか。
Visual Studio はこの情報を使用して、デバッグしようとするリリースに対応するソリューションやソースを検索します。 IntelliTrace ログを開き、イベントを選択してデバッグを開始した後に、Visual Studio はシンボルを使用して検索を実行し、イベントが発生したコードを表示します。 それから、記録された値を確認し、実行中のコード内を前後に移動できます。
TFS を使用しており、この情報がビルド マニフェスト (BuildInfo.config ファイル) ではない場合、Visual Studio は対応するソースとシンボルを現在接続されている TFS 上で検索します。 Visual Studio が適切な TFS または対応するソースを見つけられない場合、他の TFS を選択するように求めるプロンプトが表示されます。
Q: 配置したアプリに関する情報が IntelliTrace ログ内にありません。なぜこのようなことが起きたのですか。どうしたらよいですか。
この問題は、開発用コンピューターから配置した場合や配置中に TFS に接続していない場合に発生する可能性があります。
プロジェクトの配置フォルダーに移動します。
ビルド マニフェスト (BuildInfo.config ファイル) を検索して開きます。
ファイル内に以下の必要な情報があることを確認します。
フィールド |
指定内容 |
---|---|
ProjectName |
Visual Studio 内のプロジェクトの名前。 次に例を示します。
|
SourceControl |
ソース管理システムに関する情報と以下の必須プロパティ:
|
ビルド |
ビルド システムに関する情報 ("TeamBuild" または "MSBuild") と以下の必須プロパティ:
次に例を示します。
|
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) のシンボル パスが、信頼されたシンボル パスの一覧に含まれない場合に表示されます。 このパスをシンボル パスの一覧に追加するには、デバッガー オプションを使用します。