9

Chilkat ライブラリを使用してASP.Net Web サイトを( Visual Studioを使用して)コンパイルしようとしています。次のエラーにより、コンパイルが失敗します。

ファイルまたはアセンブリ 'ChilkatDotNet2、Version=9.0.8.0、Culture=neutral、PublicKeyToken=eb5fc1fc52ef09bd' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。

このエラーは、プラットフォームに準拠していないために発生すると言われています。

奇妙なことに、コンパイルは失敗しますが、ブラウザーからアクセスすると、サイトは機能します。私の理論では、IISコンパイルは Framework64 (64 ビット) フォルダーの csc.exe コンパイラーを使用し、Visual Studioは Framework (32 ビット) フォルダーの csc.exe コンパイラーを使用します。これが事実である場合、Visual Studio を ASP.Net サイト用の 64 ビット コンパイラで実行するように構成するにはどうすればよいですか?

これは私の現在の開発構成です:

  • Windows 7 (x64)。
  • Visual Studio 2008 Pro (もちろん x86...)。
  • チルカット ライブラリ (x64)
  • IIS/Asp.net (x64)。
4

2 に答える 2

27

理由:
あなたの Web サイト (管理されている部分、おそらくサード パーティ以外のすべて) は、少なくともあなたが考えているように、32 ビット モードまたは 64 ビット モードでコンパイルされていません。違いは、 Visual Studio が Web サーバーに使用する ( CassiniWebDevServer.exeのバージョン) が 32 ビットのみであることです。そのため、32 ビット互換の DLL のみをロードします。

64 ビット マシン上の IIS は、構成設定に応じて 32 ビット モードまたは 64 ビット モード (デフォルトは 64 ビット) で実行できるため、アプリケーションの読み込みに問題はありません。

解決策: 残念ながら、ここには多くのオプションがありません。私はしばらく前に同じ質問をしました。最善の策は、IIS をデバッグに使用することです。次のように設定します。

  • Web プロジェクト > 設定
  • 「ウェブ」タブ
  • [サーバー] で、[ローカル IIS Web サーバーを使用する] を選択します。
于 2010-04-08T00:06:14.340 に答える
0

解決策は、両方の DLL (x64 および x86 DLL) を GAC に配置し、各アプリケーションが x64 または x86 DLL をいつ使用するかを動的に決定できるようにすることです (もちろん、プロジェクトで GAC DLL を参照する必要があります)。

私は ChilkatDotNet2 の開発者と個人的に話し合いましたが、これは両者が同意した解決策です。

于 2011-12-30T19:34:39.910 に答える