58

パブリック .NET API に基づく別のプログラムのプラグインを作成しています。通常、これらのプラグインは、API アセンブリを参照するクラス ライブラリ DLL を作成することによって作成されます。次に、API アセンブリの基本コマンド クラスから継承することにより、コマンド クラスが作成されます。次に、アプリケーションはプラグイン DLL ファイルを参照するように設定され、ユーザーが要求したときにカスタム コマンド クラスを実際に起動する役割も果たします。

ただし、現在、 を使用して一部のコード生成を自動化しようとしSystem.CodeDOMており、API アセンブリの型に基づいて新しいクラス型を自動的に生成する単純なコンソール アプリケーションを作成したいと考えています。

それでも、アプリケーションを実行しようとすると、次の例外が発生します。

System.BadImageFormatException は処理されませんでした メッセージ: ファイルまたはアセンブリ 'RevitAPI、Version=2011.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。

通常、プラグイン アセンブリのターゲット フレームワークを 3.5 に設定する必要があります。しかし、コンソール アプリケーションのターゲット フレームワークを 2.0 に設定すると、上記のエラーが解消されることがわかりました。ただし、私のコンソール アプリケーションは、ターゲット フレームワークが 3.5 に設定されている私の他のクラス ライブラリを既に参照しています。そして、2.0 フレームワークを中心にそれらを書き直したくないのです。

4

8 に答える 8

68

おそらく 32 ~ 64 ビットのミスマッチです。

64 ビット OS で実行している場合、Assembly RevitAPI は 32 ビットとしてコンパイルされ、プロセスは 64 ビットまたは「任意の CPU」としてコンパイルされる場合があります。

または、RevitAPI が 64 ビットとしてコンパイルされ、プロセスが 32 ビットまたは「任意の CPU」としてコンパイルされ、32 ビット OS で実行されます。

于 2010-12-02T21:59:32.097 に答える
50

IIS を使用している場合は、アプリケーション プールに移動します サイトが使用するものを選択し、[詳細設定] をクリックします [32 ビット アプリケーションを有効にする] が [True] に設定されていることを確認します

于 2013-11-20T11:40:14.087 に答える
42

x64 プロジェクトを使用した VS の新規インストールで問題が発生しました - Visual Studio 2013、Visual Studio 2015、および Visual Studio 2017 の場合:

Tools
  -> Options
   -> Projects and Solutions
    -> Web Projects
     -> Check "Use the 64 bit version of IIS Express for web sites and projects"
于 2016-04-06T05:52:42.570 に答える
3

ソフトウェアを別のマシンで実行するときに同じ問題が発生しました。私の開発用 PC (Windows 7) には Visual Studio 2015 がインストールされており、ターゲット PC は Windows 10 のクリーン インストール (.Net インストール済み) でした。また、.Net Framework を含む別のクリーンな Windows 7 PC でもテストしました。ただし、両方のターゲット pc で、x86 または x64用の Visual Studio 2015 パッケージ用の Visual C++ Redistributableをインストールする必要がありました (アプリケーションのビルド対象によって異なります)。それはすでに開発者のPCにインストールされていました。

私のアプリケーションは、Visual Studio で /clr および /TP オプションを使用して C++ アプリケーションにコンパイルされた C ライブラリを使用していました。また、このアプリケーションは、dllexport メソッド シグネチャを使用して C# に関数を提供していました。C# の統合によってそのエラーが発生したのか、それとも C++ アプリケーションで同じエラーが発生したのかはわかりません。

それが誰にも役立つことを願っています。

于 2017-01-06T22:54:45.133 に答える