.NetフレームワークでアセンブリのloadFromRemoteSources構成を動的にロードします



Dynamically Load Loadfromremotesources Configuration Assembly



前書き

プラグインアプリケーション開発では、プログラムにアセンブリファイルを動的にロードし、その中でクラスオブジェクトを作成して使用する場合があります。
現時点では、CAS(コードアクセスセキュリティ)と信頼サンドボックスが関係しています。
通常、アプリケーション開発で他のライブラリを使用する場合は、それらをコードに直接導入し、コーディングに使用します。ただし、コンパイル時に参照せず、アプリケーション中にライブラリファイルを動的にロードする場合は、クラスとタイプを解析して、さらに使用します。このとき、ライブラリファイルが改ざんされ、エラーやセキュリティが発生する可能性があります。したがって、後でロードする必要がある場合は、DotNetで信頼構成を提供する必要があります。

構成

アプリケーション構成で、loadFromRemoteSourcesアイテムを追加します



この構成は次のとおりです。

<configuration> <runtime> <loadFromRemoteSources enabled='true'/> runtime> configuration>

loadFromRemoteSourcesの説明

.Net Framework 3.5以前のバージョンでは、実行ゾーンによっては、アプリケーションが外部ライブラリアセンブリをロードする場合、ライブラリが部分的な信頼で実行される場合があります。たとえば、アセンブリをWebネットワークにロードすると、Qiは実行のためにインターネットゾーンにロードされ、許可されたインターネットのコレクションが与えられます。これはインターネットサンドボックスで実行されます。既定では、リモートライブラリファイルを.net Framework4バージョン以降で実行することは許可されていません。実行する場合は、完全な信頼を設定するか、実行するプレーヤーのサンドボックスAppDomainを作成します。



.Net Framework 4以降のバージョンでは、アセンブリのサンドボックスを明示的に作成するか、それを完全に信頼して実行できます。それ以外の場合は、例外がスローされます。

アプリケーション構成のloadFromRemoteSources要素は、以前のバージョンの.NetFrameworkで部分的に信頼されていたライブラリファイルがバージョン4以降で完全信頼モードにあるかどうかを指定するために使用されます。完全信頼モードを使用するには、trueに設定します。

  • ただし、バージョン4.5では、ローカルネットワーク内のアセンブリファイルは、デフォルトモードでの実行が完全に信頼されています。
  • 使える Assembly.UnsafeLoadFrom() アセンブリをロードするために、これはいくつかのセキュリティチェックをスキップし、ネットワークからのアセンブリをローカルアセンブリとして扱います。 OSは、ローカルにダウンロードして保存した場合でも、ネットワークからのアセンブリをインターネットアセンブリとしてマークします。

その他の指示

デフォルトでは、.Net Framework 4以降のバージョンでは、CASポリシーは次のとおりです。 無効 、そしてCASが 無効 loadFromRemoteSourcesがに設定されている場合 true 効果的であること。



例外がスローされました

loadFromRemoteSourcesがtrueに設定されていない場合、次の状況で例外がスローされます。
-使用されているアセンブリは、MyComputerゾーンにありません。
-.Net Framework 3.5バージョンでは、現在のアプリケーションドメインのサンドボックスの動作は、アセンブリの動作とは異なります。この時点で、CASポリシーを閉じる必要があり、現在のドメインはサンドボックスにありません。