1

VS2005からプロジェクトをアップグレードしようとしています。 VB.NETのプロジェクトBで、C++のDLLであるA.dllを参照するC#プロジェクトに依存しています。 「アセンブリA_class、バージョン2.0.0.0、Culture =ニュートラル、PublicKeyToken = null」が見つかりませんというエラーが表示されます。 C++プロジェクトの対象プラットフォームは4.0で、そのプロジェクトは他のプロジェクトに依存しているため、私はそれをダウングレードできません。しかし、私は4.0へのVB.NETプロジェクトのためのプラットフォームを設定しました。バージョン2.0.0.0の他に何が参照されていますか?私はそれが正常に構築した後、新しいプロジェクトを作成しようとし、VBフォームを追加しました。 VBプロジェクトがそこにそれを見つけられないなら、C++ dllは出力ディレクトリにあります、それはこの時点に達しません。ビルド中。私はどちらかは、エラーを取得していない(ただし、フォームがロードされません)か、私は2つのエラー(各フォームに1つ)を取得:アセンブリA_class、バージョン2.0.0.0、Culture =ニュートラル、PublicKeyToken = nullが見つかりません

error MSB3103: Invalid Resx file. Could not load file or assembly 'A-class, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. Line 136, position 5. 

は、私はどこを見れするかわからない、私に示唆を与え、私を助けてくださいと。どうもありがとうございました。時間の「試みは間違ったフォーマットのプログラムをロードするために作られた」

答えて

2

99%これは、あなたが64ビットのツールを使用してアセンブリ32ビットをロードしようとしている、またはその逆のことを意味します。エラーメッセージのバージョン番号は、ロードしようとしているアセンブリのバージョン番号を意味します。それはターゲットとされている.NETバージョンとは関係ありません。この場合、リソースコンパイラには問題があるようです。

任意のCPUではなくx86を明示的に作成し、問題が解決するかどうかを確認してください。

+0

x86でビルドされています - x64でビルドする必要があり、x86に必要なコードには何も表示されません。依存関係については、x64でうまく構築され、Dependency Walkerでdllを検証しました。 – Thalia

+0

これはプロジェクト依存関係かファイル依存関係ですか? AFAIKプロジェクト参照(アーキテクチャは参照に埋め込まれている場合もあります)ではなく、ファイルに直接参照を追加すると、アーキテクチャ間で切り替えることはできません。 –

+0

私は質問を理解しません。もし私がそうしたら、私はこの問題を解決することに非常に近いと思う。 VBプロジェクトには、UserControlを使用して構築された2つのフォームがあり、UserControlにはC++ DLLのラッパーであるC#プロジェクトの名前空間への参照があります。また、UserControlとフォームのいずれかは、完全にビルドされ、コントロールがツールボックスに表示される別のVBプロジェクトの名前空間を使用します。メインプロジェクトのUserControlは正常にビルドされているようですが、x86のツールボックス(x64ではなく)にしか表示されません。 – Thalia

関連する問題