2012-07-27 42 views
8

WebフォームWebサイトプロジェクトがあります。このウェブサイトは、4つのクラスライブラリプロジェクトを参照しています。これらのクラスライブラリのうち3つはサードパーティのアセンブリを参照しています。 3つのクラスライブラリプロジェクトのそれぞれに対して、次のコンパイラエラーが発生します。Webサイト:MSB3270:プロセッサのアーキテクチャに不一致がありました

ASPNETCOMPILER:エラーASPCONFIG:ファイルまたはアセンブリ をロードできませんでした 'myAssembly' またはその依存関係の1つ。不正な形式のプログラム をロードしようとしました。 [プロジェクト。 metaproj]

私はすべてのAnyCPU/x86/x64の組み合わせをクラスライブラリプロジェクトで試しました。 Webサイトプロジェクトでこれを変更することはできません。私はサードパーティ製のdllのx86とx64バージョンの両方を持っています。両方を試してみました。

"ClassLibrary.csproj"(デフォルトターゲット)(4) - > (ResolveAssemblyReferencesターゲット) - > C:\ WINDOWS \ Microsoft.NET Frameworkの\ \ v4.0.30319 Microsoft.Common.targets \(1561 、5 ):警告MSB3270:"MSIL"という名前のプロジェクトが作成されており、プロセッサアーキテクチャが参照 "" ThirdPartyDll、Version = xxx、Culture = neutral、processorArchitectu re = x86のプロセッサアーキテクチャと一致しませんでした。 、 "x86"この不一致は、実行時の障害を引き起こす可能性があります。 ManagerのConfigurati を使用して、プロジェクトと 参照の間でプロセッサアーキテクチャを調整するか、プロセッサアーキテクチャth の参照に依存するように、ターゲットプロセッサアーキテクチャと一致するように、 プロジェクトの対象プロセッサアーキテクチャを検討してくださいあなたのプロジェクトの[ClassLibrary.cspro j]

次の図は、解決方法の構成を示しています。注意ここでは「AnyCPU」から変更することはできません。各クラスライブラリプロジェクト内からのみ変更することができます。

Solution configuration

WebアプリケーションへのWebサイトを変換するすべての.NET 4

はオプションではありません。

おかげで、あなたの参照されるアセンブリの

+0

David Sacksの回答を参照してください。http://stackoverflow.com/questions/10113532/visual-studio-c-c-solution-hitting-mismatch-between-processor-architecture –

答えて

5

明らかに、ネイティブ32ビットのDLLがあります。したがって、IISのアプリケーションプールは、.NETフレームワークを32ビットモードで実行するように構成する必要があります。

これは、IISマネージャで設定できます。 [アプリケーションプール]に移動して、関連するアプリケーションプールを選択し、[詳細設定...]ダイアログを開きます。 32ビットオプションは上部に近いです。

+0

サードパーティ製のdllの64ビット版でも同じことが起こります。 devサーバにデプロイすると、私はアプリケーションプールを32ビットに設定します。 –

+0

それは、MicrosoftのCランタイムDLLのように他の依存関係が見つからないサードパーティのライブラリがあるかのように聞こえます。とにかく、どんなDLLですか?私的なものかオープンソースのライブラリですか? – Codo

+0

http://dtsearch.com/ –

0

一つは、x86のみ、それが唯一のx86用にビルドする必要があります参照するためのプロジェクト鎖です。また、アプリケーションプールを展開するときに、32ビット用に設定されていることを確認してください。

+0

私はこれを試しました。すべてのプロジェクトをx86に設定する。エラーが発生するファイルまたはアセンブリ 'Project'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。 x86サードパーティのdllで、すべてがx86に設定されています。 –

+0

すべてのソリューション設定でこれを実行したことを確認してください。きれいにしなさい。 GACにローカルバージョンまたはクラッシュするバージョンがないことを再度確認します。サードパーティライブラリAが32ビットでプロジェクトBがそれを使用する場合、プロジェクトCはプロジェクトBを使用します.3つはすべてx86でなければなりません。 –

+0

GACにはバージョンがありません。あなたは地方版ではどういう意味ですか? binフォルダには?そして、「すべてのソリューション構成」によって?上の編集を参照してください(ソリューション 'AnyCPU'オプションのスクリーンキャプチャ)。 –

関連する問題