2008-09-03 5 views
1

.NETプロジェクトでCOM DLLを参照したいのですが、作成したinterop DLLが正しいバージョンを持つようにしたいパッチはDLLをいつ変更しなければならないかを知るでしょう)。.NETプロジェクトで参照されているCOM DLLの正しいバージョンを維持してください

TlbImpを使用する場合は、/asmversionフラグで必要なバージョンを指定できますが、Visual Studioから直接追加すると、元のCOM DLLのバージョンとは何の関係もないバージョンが取得されます。

私は.vcprojファイル

<ItemGroup> 
    <COMReference Include="MYDLLLib"> 
     <Guid>{459F8813-D74D-DEAD-BEEF-00CAFEBABEA5}</Guid> 
     <!-- I changed this --> 
     <VersionMajor>1</VersionMajor> 
     <!-- This too --> 
     <VersionMinor>0</VersionMinor> 
     <Lcid>0</Lcid> 
     <WrapperTool>tlbimp</WrapperTool> 
     <Isolated>False</Isolated> 
    </COMReference> 
</ItemGroup> 

にバージョンを変更しようとした。しかし、その後のプロジェクトは、次のエラーでビルドに失敗しました:

error CS0246: The type or namespace name 'MYDLLLib' could not be found (are you missing a using directive or an assembly reference?)

これはすべて作成せずに終らする方法はあります私のCOMはTlbImpであらかじめ参照していますか?

答えがの場合、には、メジャーバージョンとマイナーバージョンに加えてビルド番号を指定する方法がありますか? (例:1.2..0)

答えて

1

Guidは、TypeLibのGUIDを直接参照するのではなく、DLLを直接参照します。バージョン番号はDLLではなくTypeLibのバージョンを参照します。

バージョン番号はあなたのidlファイルに由来し、私はそれがメジャーバージョンとマイナーバージョンだけをサポートし、ビルドバージョンはサポートしていないと信じています。このバージョンは、タイプライブラリを変更すると変更されますか?マイナーバージョンが0に設定されている場合、私はそれがメジャーバージョンと一致した「最新」バージョンをインポートします信じていますが、メジャーバージョン

HKEY_CLASSES_ROOT\Typelib\{typelib uuid}\Major.Minor 

バージョン番号は下のレジストリに表示されます。何かに設定する必要があります。

関連する問題