Xamarin 自動インストルメンテーションのカスタマイズ

次の自動インストルメンテーションをカスタマイズできます。

自動インストルメンテーションをカスタマイズするには、AppDynamics.Agent.AutoInstrument.Fody パッケージがプロジェクトに追加されていることを確認してください。「自動ネットワーク リクエスト インストルメンテーションの設定」を参照してください。

ネットワークリクエストの自動インストルメンテーションのカスタマイズ

自動ネットワーク リクエスト インストルメンテーションが有効になっている場合、ウィーバはプロジェクトで HttpClient または Refit の使用の新しいインスタンスすべてを検索します。見つかったインスタンスで、エージェント インストルメンテーション コードが HttpClient または Refit リクエストに挿入されます。

プロジェクトレベルまたはクラスレベルで自動インストルメンテーションをさらにカスタマイズできます(以下のセクションを参照してください)。たとえば、次のようにすることができます。

  1. FodyWeavers.xml ファイルからプロジェクトレベルで自動インストルメンテーションを有効にして、DisableNetworkInstrumentation 属性を使用してクラスレベルで一部のファイルを除外する。

  2. FodyWeavers.xml ファイルからプロジェクトレベルで自動インストルメンテーションを無効にして、EnableNetworkInstrumentation 属性を使用してクラスレベルで一部のファイルを含める。

注: 使用バージョン

半自動ネットワーク リクエスト トラッキング

HttpRequestTrackerHandler 経由では、ネットワークリクエストは 2 回報告されません。

プロジェクトレベルでの有効化/無効化

FodyWeavers.xml ファイル内の NetworkInstrumentationEnabled フラグを使用して、プロジェクトレベルで自動インストルメンテーションを有効または無効にすることができます。

例:

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
... Existing weavers ...
<AppDynamics.Agent.AutoInstrument NetworkInstrumentationEnabled="true"/>
</Weavers>

クラスレベルでの有効化/無効化

クラスごとに次の属性のいずれかを使用して、クラスレベルで自動インストルメンテーションを有効または無効にすることができます。

  1. [EnableNetworkInstrumentation]

    [EnableNetworkInstrumentation]
    public class MyClass
    {
    ...
    }
  2. [DisableNetworkInstrumentation]

    [DisableNetworkInstrumentation]
    public class MyClass
    {
    ...
    }

推奨事項

  • 手動のネットワーク リクエスト トラッキングを使用している場合は、同じネットワークリクエストに対して重複したエントリが表示されます。手動 HTTP トラッキングこれを回避するには、手動インストルメンテーションを削除するか、そのクラスで 属性を使用します。

  • HTTP リクエストが別のプロジェクトで処理される場合は、インストルメンテーションを機能させるために、AppDynamics.AgentAppDynamics.Agent.AutoInstrument.Fody の両方をそのプロジェクトにも追加する必要があります。
  • 別のライブラリで生成された HttpClient インスタンスを使用している場合は、インストルメンテーションを機能させるために必要なことは、同じプロジェクト内でインスタンスを作成して使用することのみです。自動インストルメンテーションは、プロジェクト内の新しいHttpClient インスタンスを対象とすることで機能します。

自動ページ トラッキング インストルメンテーションのカスタマイズ

自動ページ トラッキング インストルメンテーションが有効になっている場合、ウィーバはプロジェクト内のすべての Xamarin.Forms Page のインスタンスを検索し、インストルメンテーション コードを挿入します。

プロジェクトレベルでの有効化/無効化

FodyWeavers.xml ファイル内の PageTrackingInstrumentationEnabled フラグを使用して、プロジェクトレベルで自動ページ トラッキング インストルメンテーションを有効または無効にすることができます。

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
... Existing weavers ...
<AppDynamics.Agent.AutoInstrument PageTrackingInstrumentationEnabled="true"/>
</Weavers>

クラスレベルでの有効化/無効化

クラスごとに次の属性のいずれかを使用して、クラスレベルで自動インストルメンテーションを有効または無効にすることができます。

  1. [EnablePageTracking]

    [EnablePageTracking]
    public class MyPage : Xamarin.Forms.ContentPage
    {
    ...
    }
  2. [DisableUITRacking]

    [DisablePageTracking]
    public class MyPage : Xamarin.Forms.ContentPage
    {
    ...
    }

自動 UI トラッキング インストルメンテーション

自動 UI トラッキング インストルメンテーションが有効になっている場合、ウィーバはプロジェクト内のすべての Xamarin.FormsButtonEntry、および ListView のインスタンスを検索し、インストルメンテーション コードを挿入します。

プロジェクトレベルでの有効化/無効化

FodyWeavers.xml ファイル内の UITrackingInstrumentationEnabled フラグを使用して、プロジェクトレベルで自動インストルメンテーションを有効または無効にすることができます。

例:

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
... Existing weavers ...
<AppDynamics.Agent.AutoInstrument UITrackingInstrumentationEnabled="true"/>
</Weavers>

クラスレベルでの有効化/無効化

クラスごとに次の属性のいずれかを使用して、クラスレベルで自動インストルメンテーションを有効または無効にすることができます。

  1. [EnableUITracking]

    [EnableUITracking]
    public class MyPage : Xamarin.Forms.ContentPage
    {
    ...
    }
  2. [DisableUITRacking]

    [DisableUITracking]
    public class MyPage : Xamarin.Forms.ContentPage
    {
    ...
    }

自動 UI トラッキングと XAML

自動 UI トラッキングは、XAML と分離コード UI 要素の両方で機能します。ただし、分離コード UI は自動的にインストゥルメント化されますが、XAML を自動インストゥルメント化するには追加の手順が必要です。.csproj ファイルに以下を追加します。

<PropertyGroup>
<FodyDependsOnTargets>
XamlC
</FodyDependsOnTargets>
</PropertyGroup>

自動 UI トラッキングは、事前にコンパイルされた XAML でのみ機能するため、XamlCompilationOptions.Compile を使用する必要があります。

[XamlCompilation(XamlCompilationOptions.Compile)]

デフォルトでは、Visual Studio Xamarin.Forms テンプレートを使用して作成されたプロジェクトには、これがすでに含まれています。詳細については、「XAML Compilation in Xamarin.Forms」を参照してください。