2011-11-25 6 views
7

アセンブリをロードする.Net 4 Winformsアプリケーションに以下のコードがあります。すべてのファイルはC:にあります。罰金が、以下の2つのエラー動作し、多くのDLLのがあります。AssemblyFileRemoteSources error using Assembly.LoadFrom

試みが は、アセンブリが .NETの以前のバージョンでサンドボックス化させていたネットワーク上の場所からアセンブリをロードしましたフレームワーク。この のリリースでは、.NET Frameworkでは既定でCASポリシーが有効になっていないため、この の負荷は危険です。この負荷が アセンブリのサンドボックスを対象としていない場合は、loadFromRemoteSourcesスイッチを有効にしてください。詳細については、 http://go.microsoft.com/fwlink/?LinkId=155569を参照してください。

これが唯一ここではいくつかのPC

上の問題のようですがコードです:

strDLLs = Directory.GetFileSystemEntries(strPath, "*.dll") 
For intIndex = 0 To strDLLs.Length - 1 
    Try 
     objDLL = [Assembly].LoadFrom(strDLLs(intIndex)) 
     ExamineAssembly(objDLL, strInterface, Plugins) 

    Catch e As Exception 
     ' MsgBox("Error whilst loading Library: " & strDLLs(intIndex) & ". Reported Error was:" & vbCrLf & e.ToString) 
    End Try 
Next 
+0

チェックこの答え、[http://stackoverflow.com/a/33755170/1127429](http://stackoverflow.com/a/33755170/1127429) – GMG

答えて

20

まあ、ファイルが、おそらく、インターネットからダウンロードされたため、問題があるが判明しました。右クリックを修正するには

- >プロパティ - >

enter image description here

+0

エレガントにあなたの問題を解決することができますこれは、Visual Studioのデザイナーでこのエラーが発生したときに私の問題を解決しました。 –

2

のブロックを解除これは私がクライアント側で任意のクリックに頼ることなく、それが仕事を得るために管理する方法です:

var appDomain = AppDomain.CreateDomain(assemblyName); 
var assembly = appDomain.Load(File.ReadAllBytes(assemblyName)); 

CreateDomain with Evidenceパラメータを使用すると、「このメソッドは.NET Frameworkによって廃止されたCASポリシーを使用します」というメッセージが表示されます。メッセージ。

また、あなたが適切なサンドボックス設定することができます。ジョンにピギーバック

http://msdn.microsoft.com/en-us/library/bb763046.aspx http://blogs.msdn.com/b/shawnfa/archive/2005/08/08/449050.aspx

1

を、私はこの問題を抱えていたが、多くの異なるフォルダ内のアセンブリの多くが付いています。 SysinternalsからStreamsをダウンロードして、ファイルを一括でブロック解除しました。私はこのトピックについてのスーパーユーザに関する良い議論を見つけました。

Streams from Sysinternals Super User discussion