Azureは不正なDLLを参照します

This is somewhat of a follow up to: Reference alternate to reference assembly in Visual Studio 2010?

私はコアフレームワークDLLの代替バージョンを参照しています。 Visual Studio(およびローカルデバッガファブリック)では、このファイルを参照する際に問題はありません。さらに、ファイルはローカルコピーとマークされています。しかし、クラウドに展開すると、次のようになります。

ファイルまたはアセンブリ '(アセンブリ名)またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。

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

最初にDLLを使用するように強制する方法はありますか?

Note: The entire concept of replacing a .NET CLR DLL is a huge hack anyway, so hacks are welcome. When .NET 4.5 comes out supporting the feature I need, this will all be stripped out.

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

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

4 答え

CLRのヒントを試してみてください。CLRは最初にローカルフォルダで調査されます:

 
 
   
 

Probingセクションによるアセンブリの配置の詳細については、こちらをご覧ください。これは役に立ちます。

1
追加された

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

1
追加された
これはフレームワークのバージョンとは関係ありません。私はすべてのフレームワークのバージョンが間違ったフレームワークバージョンであることを意味するCLR DLLを置き換えています。私はそれが正しいDLLをロードするように強制する必要があります。
追加された 著者 David Pfeffer,
kk。ごめんなさい。ソリューションに異なる.NET Frameworkのバージョンがある場合、同じエラーが表示されています。
追加された 著者 BrentDaCodeMonkey,

Appdomain.AssemblyResolveイベントを使用してキャッチし、手動でロードしようとする可能性があります。しかし、私はそれが解雇されているかどうかわからないし、回避策です。

1
追加された
それは悪い考えではありません。私はそれを撃つだろう。とにかく.NET 4.5が出てくるまで、私は必要なものを含めるべきです。
追加された 著者 David Pfeffer,

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

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

1
追加された