VS2010 Expでアプリケーション設定を使うと例外

blog20100829-VS2010Settings

Visual Studio 2010 Expressで
  • メニュー→プロジェクト→hogeのプロパティ→設定ページ
  • プロジェクトに設定ファイル(Settings1.settingsなど)を追加してsettingsファイルを開く
などをした後、設定に項目を追加、実行ファイルを走らせると即刻例外で終了してしまいました。デバッガから起動するとSystem.BadImageFormatExceptionLink が発生しているらしい。

この例外を検索すると多くはx64のコードからx86のDLLなどをロードしようとした(または逆)時に発生するようですが、今回そんなDLLを使った覚えはなく。

問題なく動いていたコードに書き戻してどのファイルが問題を発生させるのか調べたところ、原因はどうやらcsprojファイルに
<None Include="app.config" />
という行が追加されるかららしい。試しにこの行をテキストエディタで削除してプロジェクトを再読み込みすると、問題なく起動します。

しかしこれはapp.configをプロジェクトから外すという事。設定項目はsettingsとapp.configファイル両方に記録されるのですが、ビルド後の設定変更で使われるのは後者であり外すのはまずい。また設定項目を編集すると問題の行が復活するのでいちいち消さないといけないので、面倒。

Visual Studioのどこかに設定するところがあるのだろうか、それともバグ?

環境は以下のとおり
  • Visual Studio 2010 Express Edition Version 10.0.30319.1 RTMRel
  • .NET Framework Version 4.0.30319 RTMRel
  • Windows7 Home Premium x64 Version 6.1.7600
  • Intel Core i7 920 6GB RAM

[2010/8/29 追記] 32bit OSだと問題なし。ということはやっぱり64bitと32bit混在が原因なのか、むむむ…

[2010/8/29 追記] Visual Studioの設定をいじっているうちに発生しなくなってしまいました。やったことは以下の内容。
  • ツール|設定|上級者設定を選択
  • ツール|オプション→プロジェクトおよびソリューション|全般を開き、ビルド構成の詳細を表示にチェック
  • ビルド|構成マネージャを開き、x64とAny CPUプラットフォームを追加(後でソリューションファイルを元に戻してなかったことに)
  • プロジェクト|hogeのプロパティ→アプリケーションを開き、対象フレームワークを.NET Framework 4 Client Profileから.NET Framework 4に変更
エラーが出なくなったのは最後の項目をやった後。それまではエラーが出続けたので、対象フレームワークを変更するだけで良いかもしれません。以後、対象フレームワークを元に戻してもファイルをバックアップに書き戻してもエラーが出なくなってしまったので、追検証不可能となってしまいました。

— posted by mu at 12:30 am   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0089 sec.
prev
2010.8
next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31