2010年2月25日木曜日

.NET Framework 4.0で混合モードのアセンブリを読み込めない旨のエラー

※記事を書いている時点では,.NET Framework 4.0はリリース候補版です.また,開発環境はVisual Studio 2010のリリース候補版です.

Mixed mode assembly is built against version 'v1.x(or v2.x)' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

エラーを解決するには,アプリケーションの設定ファイル(app.config)を以下のように書き換えます.

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

混合モードアセンブリ(managedとunmanagedのコードを両方含んだアセンブリ)は何かと使うので,少なくともしばらくはこの設定は外せそうになさそうです.それは兎も角として,CLR 3.0はどこへ!?

参考:<startup> ElementF# Scripting, .NET 4.0 and Mixed-mode assemblies

7 件のコメント:

  1. 仕事ではまっていたところ、こちらにたどり着き解決することができました。ありがとうございます!

    返信削除
  2. > ぴくりとさん
    コメントありがとうございます.お役に立ててよかったです^^ゝ

    返信削除
  3. 参考になりました。ありがとうございます。
    ただ、開発時のデバッグする時はこれでうまくいくのですが
    exeファイルを配布して他のパソコンで
    ソフトを起動すると
    混合モード アセンブリはバージョン ‘v1.1.4322′ のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。

    とエラーが出てしまいます・・・
    どうしてかご存知でしたら誠に勝手なお願いではございますが
    ご連絡くださいましたら幸いです。

    返信削除
  4. こんにちは

    プロジェクトをビルドすると,exeファイル(*.exe)と同じディレクトリに,configファイル(*.exe.config)が作成されていると思います.
    他のパソコンに配布する際に,exeファイルとconfigファイルをセットで配布すれば,うまく動くのではないでしょうか?

    返信削除
  5. 一緒にしたらうまくいきました。
    助かります。

    返信削除
  6. VC#2010+DX&DXInputで同症状に陥り、こちらを拝見して解決に至りました。
    匿名で失礼しますが、とても感謝しています。ありがとうございました。

    返信削除
  7. 助かりました!ありがとうございます!

    返信削除