---
title: "アセンブリリゾルバスキャナー"
slug: "assembly-resolver-scanner"
abstract: "起動時にSitecoreがスキャンするアセンブリの数を設定すれば、起動プロセスを速くできます。"
---
# アセンブリリゾルバスキャナー

Sitecoreはアセンブリリゾルバを使って実行時に型をスキャンします。型スキャンは大量のアセンブリをタイプスキャンする作業でリソースを大量に消費することがあります。このスキャンからどのアセンブリを含めるか、どのグループを除外するかを設定できます。アセンブリを除外すると起動時間を短縮できます。

アセンブリをスキャンする際には3つの異なる戦略を用いることができます。

-   Blacklist – excludedAssemblies ノードにリストされているライブラリを除くすべてのライブラリを読み込みます。名前空間: Sitecore.Web.AssembliesScanner.ExcludedAssembliesConfiguration。
-   ホワイトリスト – includedAssemblies ノードにリストされているライブラリのみを読み込みます。名前空間: Sitecore.Web.AssembliesScanner.IncludedAssembliesConfiguration。
-   混合戦略 – ブラックリスト化していないホワイトリストアセンブリをロードします。名前空間: Sitecore.Web.AssembliesScanner.MixedAssembliesConfiguration。

[カスタム戦略を作成する](https://doc.sitecore.com/xp/ja/developers/93/sitecore-experience-manager/assembly-resolver-scanner.html#UUID-93126291-50e0-662f-b8d1-e73ce04b58be_id__How_to_create "Create a custom strategy")こともできます。

## アセンブリの包含・除外の設定

すべてのアセンブリ構成はconfigurationAssembliesノードの下にあります。Sitecoreが使用する戦略は、このノードの型を設定することで指定します。例えば: Sitecore.Web.AssembliesScanner.ExcludedAssembliesConfiguration, Sitecore.Web。

### 排除(ブラックリスト)アセンブリ

configurationAssemblies/excludedAssembliesノードで除外したいアセンブリ名のリストを指定します。excludedAssembliesリストに含まれる名前で始まるアセンブリ名はスキャンされません。

スキャンされる型を含まないと分かっている場合は、ソリューションアセンブリをリストに追加できます。

例:

<excludedAssemblies hint="list">
 <excludedAssembly id="Antlr3.Runtime">Antlr3.Runtime</excludedAssembly>
 <excludedAssembly id="ComponentArt">ComponentArt</excludedAssembly>
 <excludedAssembly id="CsQuery">CsQuery</excludedAssembly>
 <excludedAssembly id="CustomFields">CustomFields</excludedAssembly>
</excludedAssemblies>

### アセンブリの含め(ホワイトリスト)

含めたいconfigurationAssemblies/includedAssembliesノードのアセンブリ名をアセンブリ名のリストとして指定します。 includedAssembliesリストで名前で始まるアセンブリ名はスキャンされます。

例:

<includedAssemblies hint="list"> <includedAssembly id="Sitecore.Mvc">Sitecore.Mvc</includedAssembly> <includedAssembly id="System.Web.Mvc">System.Web.Mvc</includedAssembly></includedAssemblies>

### 混合戦略

混合戦略を使って、excludedAssembliesとincludedAssembliesを同時にリストアップできます。

以下の例は、混合戦略を用いるときに何が起こるかを示しています。

例1:

<excludedAssemblies hint="list">
 <excludedAssembly id="Sitecore.Mvc">Sitecore.Mvc</excludedAssembly>
</excludedAssemblies>
<includedAssemblies hint="list">
 <includedAssembly id="Sitecore.">Sitecore.</includedAssembly>
</includedAssemblies>

結果:Sitecore.Mvcを除くすべての\*Sitecore\*.\*アセンブリをスキャンします。

例2:

<excludedAssemblies hint="list">
 <excludedAssembly id="Sitecore.Mvc">Sitecore.Mvc</excludedAssembly>
</excludedAssemblies>
<includedAssemblies hint="list">
 <includedAssembly id="Sitecore.Mvc">Sitecore.Mvc</includedAssembly>
</includedAssemblies>

結果:アセンブリをスキャンできません。

例3:

<excludedAssemblies hint="list">
 <excludedAssembly id="Sitecore.">Sitecore.</excludedAssembly>
</excludedAssemblies>
<includedAssemblies hint="list">
 <includedAssembly id="Sitecore.Mvc">Sitecore.Mvc</includedAssembly>
</includedAssemblies>

結果:アセンブリをスキャンできません。

## 構成をパッチしてください

例えばExcludedAssembliesScanner.configのような構成をincludeファイルに追加すると、Sitecore元のファイルにあなたが指定したものを修正します:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
 <sitecore>
 <mvc>
 <configurationAssemblies type="Sitecore.Web.AssembliesScanner.ExcludedAssembliesConfiguration, Sitecore.Web">
 <excludedAssemblies hint="list">
 <excludedAssembly id="MyTestWildCard1">MyTestWildCard1</excludedAssembly>
 <excludedAssembly id="MyTestWildCard2">MyTestWildCard2</excludedAssembly>
 </excludedassemblies>
 </configurationAssemblies>
 </mvc>
 <sitecore>
</configuration>

すべてのexcludedAssemblyノードは一意なIDを持つ必要があります。

## カスタム戦略を作成する

カスタム戦略を作成するには以下のステップを踏みましょう:

1.  AssembliesConfiguration抽象クラスから継承する構成クラスを作成します。
2.  このクラスの AssemblyFilter プロパティをオーバーライドします。プロパティはフィルタークラスのインスタンスを返さなければなりません。
3.  IAssemblyFilterを実装するフィルタークラスを作成し、すべてのフィルターロジックをIsAllowedメソッドに配置します。