2009-05-13 23 views
1

私がクラスライブラリを追加したフレームワーク3.5(OS = Win XP)のVisual Studio 2008で最も簡単なソリューションを想像してみてください。その後、私はCOMクラスを追加しました。このCOMクラスは単純なので、1つの関数しか公開しません。.NET COMのセットアッププロジェクトとは何ですか?

パブリック関数SayHello()As String "Hello。" 終了機能

私はこのクラスライブラリをビルドしました。これは.dllと.tlbを生成しました。私はVB6のアプリケーションの参照ボックス(同じcomp上にある)の.tlbを参照して、私はそれを参照してください。私はSayHelloに電話し、それを実行して、...「自動化エラー」。

私は、SetUpプロジェクトを作成して.dllをインストールする方法の記事を見つけました。このセットアッププロジェクトを使用して.dllをseperatlyインストールした後、COMコンポーネントはVB6アプリケーションのように動作します。

今、私の質問のために...なぜですか?誰かがセットアッププロジェクトが何をしているのか私に説明してもらえませんか?

P .: VB2005とFramework 2.0でうまくいきました。しかし、今ではこの単純なサンプルプロジェクトを動作させることはできません。

答えて

2

アセンブリのタイプライブラリのUUIDを明示的に指定しない限り、すべてのCOMで公開されているすべてのクラスとインターフェイスVSは、再構築ごとに自動的に変更されます。

VSをコンパイルする前に、以前のバージョンのアセンブリの登録を解除してから、アセンブリをコンパイルして新しいアセンブリを登録します。コンシューマ(VBアプリケーション)が直ちに再コンパイルされていない場合、以前のバージョンのアセンブリおよび対応するタイプライブラリのレジストリにはデータがないため、アセンブリを使用できなくなります。

COMに公開されているすべてのエンティティのUUIDを明示的に指定する必要があり、次にバイナリ互換性を完全に維持する必要があることに対処するためです。

関連する問題