2012-02-06 24 views
0

これは多少のフォローアップのである:私はコアフレームワークのDLLの代替バージョンを参照していますReference alternate to reference assembly in Visual Studio 2010?Azureの参照を間違ったDLL

。 Visual Studio(およびローカルデバッガファブリック)では、このファイルを参照する際に問題はありません。さらに、ファイルはCopy Localとマークされています。ただし、クラウドに展開すると、次のようになります。

ファイルまたはアセンブリ '(アセンブリの厳密な名前)'またはその依存関係の1つをロードできませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。

リモートデスクトップを使用して、正しいファイルが他の依存関係と共に実際にE:\approotフォルダにあると判断しました。私はファブリックが私のファイルを使用するのではなくGACを見ていると仮定しています。

まずDLLを強制的に使用する方法はありますか?

注: .NET CLR DLLの置き換えの全体概念は、とにかく巨大なハックなので、ハックは大歓迎です。 .NET 4.5が必要な機能をサポートするようになると、これはすべて取り除かれます。

詳細情報:私のWebロールは正常に機能しているようですが、自分のAutofacコンテナを構築しようとすると、そのエラーで私の作業者の役割がなくなります。これは、ビルド前にアセンブリを明示的にロードしてもうまく動作しますが、これも正常に動作します。

+2

ええと、あなたがやっていることは、ライセンスで特に禁止されています。アズールがこれを強制する確率、またはそれを仮定する確率はゼロではない。 DLLのngen-edバージョンが役割を果たす可能性があります。 –

答えて

1

フュージョンログを実行して、どこからロードしているかを確認できます。他に何かが実行されていて、そのファイルを最初にロードしている場合は、そのプロセス用の.configファイルを作成する必要があります。また、新しいのAppDomainを作成し、そこにあなたのアセンブリをロードし、これは、動的アセンブリのために何をするかのような何か好きなエキゾチックな何かを行うことができるかもしれません:

http://blogs.msdn.com/b/tom/archive/2007/12/05/dynamic-assemblies-and-what-to-do-about-them.aspx

-1

プロジェクトのいずれかに.NET Frameworkバージョンがターゲットに設定されていない場合、この問題が発生することがあります。おそらく、ソリューション内のすべてのプロジェクトが同じ設定になっていることを確認してください。

+0

これはフレームワークのバージョンとは関係ありません。私はすべてのフレームワークのバージョンが間違ったフレームワークバージョンであることを意味するCLR DLLを置き換えています。私はそれが正しいDLLをロードするように強制する必要があります。 –

+0

kk。ごめんなさい。ソリューションに異なる.NET Frameworkのバージョンがある場合、同じエラーが表示されています。 – BrentDaCodeMonkey

1

Appdomain.AssemblyResolveイベントを使用してキャッチし、手動で読み込むことができます。しかし、私はそれが解雇されているかどうかわからないし、回避策です。

+0

それは悪い考えではありません。私はそれを撃つだろう。とにかく.NET 4.5が出てくるまで、私は必要なものを含めるべきです。 –

1

あなたが最初のプローブばならないCLRをほのめかしてみてくださいローカルフォルダ:

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <probing privatePath="." /> 
</assemblyBinding> 
</runtime> 

セクションhereをプロービングすることによってロケ総会の詳細をチェックしてください。これは役に立ちます。

関連する問題