6

これは私が最近遭遇した話と考えられる答え (?) です。stackoverflow でまだこれを見つけることができなかったので、この情報を共有したかっただけです。

ソリューションを VS2008、WinXP、32 ビットから VS2010、Win7、64 ビットにアップグレードしました。

新しい RESX ファイルを生成する、または RESX ファイルを更新する WinForms に変更を加えると、問題が発生します。

VS2010 でのデバッグ ビルドは問題ありませんでした。ただし、リリース モードでは、遅延署名プロセスを使用する必要があります。このプロセスにより、VS2010 で生成された新しいRESX ファイルでエラーが発生します。(繰り返しますが、古い RESX ファイルはこの動作を示さないことに注意してください)

(CoreResGen ターゲット) Search.resx(176,5): エラー RG0000: ファイルまたはアセンブリ xxx.Controls を読み込めませんでした。Version=1.5 0、Culture=neutral、PublicKeyToken=7acfcc7eabace048' またはその依存関係の 1 つです。厳密な名前の検証に失敗しました。(HRESULT からの例外: 0x8013141A) 行 176、位置 5。

WEBで見つけた情報をまとめてみました

http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect- format.aspx

他の人がこれに遭遇したかどうか、そして彼らがどの回避策をとったか疑問に思っていましたか? VS2010 SP1 がリリースされるのを待つという回避策はありません。

残念ながら、32 ビットとしてコンパイルされた可能性のあるサード パーティのアセンブリを使用しています。(私は彼らのビルドプロセスを管理していません)

-- 2010 年 8 月 11 日 いくつかの追加情報。

コントロール自体は署名されていないか、遅延署名されていません。しかし、コントロールは遅延署名されたアセンブリのコンポーネントを使用しています。両方のアセンブリが同じソリューションにあります。

消費アセンブリを 4.0 フレームワークを対象とするように変更すると、問題は解決されます。3.5 フレームワークをターゲットにすると、エラーが発生します。

4

1 に答える 1

1

私たちが経験した問題はImageList、*.resx ファイルの内部にもありました (デザイナーではなくコードで開かれました)。

<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        [bunch of binary data here]
    </value>
</data>

<data />(上記参照)に関連するタグのみを削除してからImageList、コントロールのデザイナーで参照を削除することで、これが発生したことを確認しました。

//initialize
this.imageListSuperHeroes = new System.Windows.Forms.ImageList(this.components);

//control that references the ImageList
this.btnAwesome.ImageKey = "superman.gif";
this.btnAwesome.ImageList = this.imageListSuperHeroes;

「ローカル リソース」ではなく「プロジェクト リソース ファイル」からコントロールの画像参照 (個々の画像を使用してください) を追加し、フォームから削除した参照を更新します。

this.btnAwesome.Image = global::PMPPlus.Properties.Resources.Superman;

これで修正されました。うまくいけば、これが正しい方向に進むのに役立ちます. そうでない場合は、*.resx を掘り下げて、どの問題<data />があなたを台無しにしているかを確認してください。

関連リンク: http://connect.microsoft.com/VisualStudio/feedback/details/566131/error-in-resx-file-when-adding-imagelist

彼らは、私たちのニーズに合わないいくつかの回避策を提案しました:

  • 別のプラットフォームとフレームワークをターゲットにする
  • C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin ディレクトリをねじ込むには、corflags を使用してください。

私たちのセットアップ

  • 古い環境: Windows XP 32 ビット
  • 新しい環境: Windows 7 64 ビット
  • 共通セットアップ: VS2010 + ターゲット フレームワーク: 3.5 + ターゲット プラットフォーム: x86
于 2011-09-01T13:23:38.617 に答える