1. その他の開発タスク

アセンブリレゾルバスキャナ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecoreはアセンブリ リゾルバーを使用して、実行時にアセンブリの型をスキャンします。アセンブリの大規模なコレクションをタイプスキャンすると、リソースを大量に消費するタスクになる可能性があります。このスキャンに含めるアセンブリと、このスキャンから除外するアセンブリを構成できます。アセンブリを除外すると、起動時間を短縮できます。

アセンブリをスキャンするには、次の3つの異なる戦略を使用できます。

  • ブラックリスト – excludedAssembliesノードにリストされているライブラリを除くすべてのライブラリをロードします。名前空間: Sitecore.Web.AssembliesScanner.ExcludedAssembliesConfiguration.

  • ホワイトリスト – includedAssembliesノードにリストされているライブラリのみをロードします。名前空間: Sitecore.Web.AssembliesScanner.IncludedAssembliesConfiguration.

  • 混合戦略 – ブラックリストに登録されていないホワイトリストに登録されたアセンブリをロードします。名前空間: Sitecore.Web.AssembliesScanner.MixedAssembliesConfiguration.

カスタム戦略を作成することもできます

アセンブリの包含と除外を構成する

すべてのアセンブリ構成は、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>

混合戦略

混合戦略を使用して、excludedAssembliesincludedAssembliesを同時にリストできます。

次の例は、混合ストラテジーを使用した場合に何が起こるかを示しています。

例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など) に追加すると、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メソッドに配置します。

この記事を改善するための提案がある場合は、 お知らせください!