web-dev-qa-db-ja.com

ランタイム例外System.BadImageFormatException

助けてください、私はこの問題を解決するために私が考えることができる他のすべてを試みました。

そして、あなたが応答する前に注意してください:

StackOverflow.comやその他のウェブ上のウェアに関する他の質問からできることはすべて行いました。ビルド構成を「AnyCPU」から「x64」、さらには「x86」に変更します。また、ターゲットビルドを.NET4.0から.NET3.5に変更します(.NET 4.0を必要とするSystem.Windows.Interactivityを使用しているため、これは機能しません)。したがって、.NET4.0に固執しています。ですから、私はすでにこれのさまざまな組み合わせを試したので、これを行うように私に言う答えを与えないでください。


CodePlex.comのオープンソースプロジェクトであるTimersXPというVS2013のプロジェクトがあります: https://timersxp.codeplex.com/

エラーなしでビルドされますが、実行時例外が発生します:System.BadImageFormatExceptionは未処理でしたメッセージ:タイプ 'System.BadImageFormatException'の未処理の例外-)不明なモジュールで発生しました。追加情報:ファイルまたはアセンブリ 'TimersXP.exe'またはその依存関係の1つを読み込めませんでした。このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによって構築されているため、ロードできません。

少し歴史がありますが、プロジェクトは元々.NET 3.5でしたが、System.Windows.Interactivityを追加する必要があり、それが.NET 4.0をサポートする必要があることに気付いたとき、バージョン番号を上げました。

<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0\Libraries\System.Windows.Interactivity.dll</HintPath>
  <Private>False</Private>
</Reference>

はい、バージョン4.5.0.0と表示されていることは知っています。それも組み合わせてみました。予想とは異なる動作をする組み合わせを見逃さない限り。

これはオープンソースなので、プロジェクトのすべてのコードが利用可能です。誰かが私を助けてくれませんか?私は考えが足りないのではないかと心配しています。

たぶんApp.configファイルにこのバージョン番号がありますか?

<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

すべてのコードを調べて、バージョンが3.5、4.0、または4.5と表示されているすべての場所を変更したくありません。それはあまり良い考えではなかったようです。

いつものように、一度見たら自分を蹴りたくなるでしょう!

14
Seth Eden

私の場合、プロジェクトのプロパティがすでに4.5.2として表示されていたのに、app.configがランタイムバージョンを2.0として表示していたのは不思議です。プロジェクトを右クリックし、プロジェクトのプロパティを選択し、最初にターゲットフレームワークを4.5.1に更新してから、4.5.2に更新しました。それがトリックを作り、app.configを以下のように更新しました:

前:

<startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>

後:

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
12
user007

超シンプルなコンソールアプリでも同様の問題が発生しましたが、x86のみに設定された一部のライブラリに依存していたためであることが判明しました、およびAnyCPUでは機能しません。

修正:コンソールアプリもx86構成でのみビルドするように変更しますそしてそれはうまくいきました。

System.BadImageFormatException was unhandled
Message: An unhandled exception of type 'System.BadImageFormatException'     occurred in Unknown Module.
Additional information: Could not load file or Assembly 'My.Assembly,     Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its     dependencies. An attempt was made to load a program with an incorrect format.

例外メッセージのスクリーンショット

以下も参照してください: BadImageFormatExceptionのトラブルシューティング

10
m1m1k

私は削除しました

<startup>
    <supportedRuntime version="v2.0.50727"/>
</startup>

設定とアプリのセクションが機能しました。

2と4が必要なときに、ステートメントがアプリをフレームワーク2に制限していたと思います。

4
user2983931