Xamarin 自動インストルメンテーションのカスタマイズ
次の自動インストルメンテーションをカスタマイズできます。
自動インストゥルメンテーションをカスタマイズするには、AppDynamics.Agent.AutoInstrument.Fody パッケージがプロジェクトに追加されていることを確認してください。「自動ネットワーク リクエスト インストルメンテーションの設定」を参照してください。
ネットワークリクエストの自動インストルメンテーションのカスタマイズ
自動ネットワーク リクエスト インストルメンテーションが有効になっている場合、ウィーバはプロジェクトで HttpClient または Refit 使用のすべての新しいインスタンスを検索します。見つかったインスタンスで、エージェント インストルメンテーション コードが HttpClient または Refit リクエストに挿入されます。
プロジェクトレベルまたはクラスレベルで自動インストルメンテーションをさらにカスタマイズできます(以下のセクションを参照してください)。たとえば、次のようにすることができます。
-
FodyWeavers.xmlファイルからプロジェクトレベルで自動インストゥルメンテーションを有効にして、DisableNetworkInstrumentation属性を使用してクラスレベルで一部のファイルを除外する。 -
FodyWeavers.xmlEnableNetworkInstrumentationファイルからプロジェクトレベルで自動インストゥルメンテーションを無効にして、属性を使用してクラスレベルで一部のファイルを含める。
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>
クラスレベルでの有効化/無効化
クラスごとに次の属性のいずれかを使用して、クラスレベルで自動インストルメンテーションを有効または無効にすることができます。
-
[EnableNetworkInstrumentation]
[EnableNetworkInstrumentation] public class MyClass { ... } -
[DisableNetworkInstrumentation]
[DisableNetworkInstrumentation] public class MyClass { ... }
推奨事項
-
手動のネットワーク リクエスト トラッキングを使用している場合は、同じネットワークリクエストに対して重複したエントリが表示されます。手動 HTTP トラッキングこれを回避するには、手動インストルメンテーションを削除するか、そのクラスで 属性を使用します。
- HTTP リクエストが別のプロジェクトで処理される場合は、インストゥルメンテーションを機能させるために、
AppDynamics.AgentとAppDynamics.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>
クラスレベルでの有効化/無効化
クラスごとに次の属性のいずれかを使用して、クラスレベルで自動インストルメンテーションを有効または無効にすることができます。
-
[EnablePageTracking]
[EnablePageTracking] public class MyPage : Xamarin.Forms.ContentPage { ... } -
[DisableUITRacking]
[DisablePageTracking] public class MyPage : Xamarin.Forms.ContentPage { ... }
自動 UI トラッキング インストルメンテーション
自動 UI トラッキング インストゥルメンテーションが有効になっている場合、ウィーバはプロジェクト内のすべての Xamarin.Forms Button、Entry および 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>
クラスレベルでの有効化/無効化
クラスごとに次の属性のいずれかを使用して、クラスレベルで自動インストルメンテーションを有効または無効にすることができます。
-
[EnableUITracking]
[EnableUITracking] public class MyPage : Xamarin.Forms.ContentPage { ... } -
[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」を参照してください。