2

プロジェクトをビルドしようとしたとき、私は毎日のように今日も働いていましたが、次のエラーが発生しました。

GUID '00020430-0000-0000-c000-000000000046' を持つ複数のバージョンのアセンブリが見つかりました。これらのアセンブリのいずれかを事前にインポートしてみてください。

アプリケーションのルート ディレクトリにあるファイル TlbImp に問題があると表示されます。唯一の問題は、プロジェクトにそのようなファイルがなく、私が覚えている限りではなかったということです。

私は Visual Studio 2010 で Web アプリケーションを使用しています (この情報が役立つかどうかはわかりませんが、何でも構いません)。

4

5 に答える 5

6

@DavRobに感謝しますが、それは私が探していた答えではありませんでした。@dev_Gabriel私はそれを修正することができました。これが私のために働いたステップです:

  1. Visual Studio でプロジェクトを右クリック
  2. プロパティを選択
  3. 参照タブを選択します。
  4. 参照のいずれかが obj\Debug フォルダーからのものであるかどうかを確認し、それらを削除します。
于 2011-11-07T23:44:32.157 に答える
2

そのために埋められたMicrosoft接続バグがあります

COMコンポーネントへの参照に問題があるとのことです。

これは修正されており、VisualStudioの将来のリリースで利用できるようになるはずです。
(注:これはSP1にはなりませんでした。)

Tlbimpはタイプライブラリインポーターです。Visual Studioはこれを使用して、追加したCOMライブラリへの参照の相互運用機能アセンブリを生成します。

于 2011-05-05T18:01:58.957 に答える
1

@ JeremyThompsonの応答に追加するだけです:

私の問題は、[参照の追加] に移動し、アプリケーションの .exe (つまり、C:\Program Files (x86)\ProFile\profile.exe) を参照して、COM オブジェクトを参照したことが原因でした。これにより、@ JeremyThompson で説明されているように、obj/Debug フォルダーにある "Interop.Profile.dll" (アクセスしようとしている SDK によって明らかに異なる) 参照が追加されました。

私の特定のケースでは、この Interop.Profile.dll を 2 つのプロジェクトで参照しましたが、そのうちの 1 つは上記のエラーが発生せず、正常にビルドされました。正常にビルドされたプロジェクトの obj/Debug フォルダーに移動し、Interop.Profile.dll をソリューションの DLL フォルダーにコピーしました (これは、すべてのアセンブリを 1 か所に保持するために作成した単なるフォルダーですが、技術的には、 COM DLL を obj/Debug フォルダーの外側の任意の場所に配置)、両方のプロジェクトの参照を変更して、obj/Debug フォルダーではなく、DLLs フォルダーにある Interop.Profile.dll を指すようにしました。

これを行うと、アプリケーションが正常にビルドされました (リビルド、またはクリーンしてからビルドを使用)。

明らかに、私のケースはかなり具体的ですが、うまくいけば誰かがそこに役立ちます.

于 2014-01-09T15:50:05.723 に答える
0

同じエラーが発生しました。2 つの異なる場所で同じ .dll を 2 回参照していることに気付きました。

したがって、.dll へのすべての参照を削除し、単一の場所から再度追加するだけで済みました。

これでエラーが解決しました。

于 2012-03-23T15:14:20.547 に答える
0

VS 2008 プロジェクトを VS 2013 に移行するときに、別のひねりを加えて、今日これを持っていました。理解するのにしばらく時間がかかったので、他の誰かを助けるかもしれません。10 ほどのプロジェクトを含むソリューションがあります。プロジェクトの 1 つは、古い OCX を GUI で参照する VB です。必要な相互運用参照を作成するには、必要な AX 相互運用参照を作成するだけでなく、他の参照を取り込む Winform に OCX をドラッグする必要があります。これらの相互運用 dll はすべて ...\obj\debug\ パスに作成されます。いくつかの「複数バージョン」エラーが発生していましたが、COM 参照のあるプロジェクトからではなく、VB プロジェクトを参照した別の C# プロジェクトから発生していました。これを取り除くために、VB プロジェクトによって作成された相互運用ファイルを C# プロジェクトの ...\obj\debug\ フォルダーにコピーしました。プロジェクトをきれいにするたびに ファイルを再コピーする必要がありますが、少なくとも現在は機能しています。AxInterop を別の場所に移動して参照することはできないことに注意してください。アイデアをくれてありがとう@crunchy。

于 2014-11-17T19:57:17.963 に答える