2

同僚のCOMDLL(MyLogic.dll)への参照をVisual Studio 2005のC#プロジェクトに追加しました。予想どおり、これにより、出力フォルダーにInterop.MyLogicLib.dllが自動生成されます。ただし、COM DLLのバージョン番号は2.1.0.180ですが、自動生成された相互運用機能アセンブリのバージョン番号は1.0.0.0です。Visual Studioに元のバージョン番号を保持させるにはどうすればよいですか?

現状では、1.0.0.0のバージョン番号は、私の製品のインストールに悲しみを与えています。古いコピーと新しいコピーの両方に1.0.0.0バージョンがあるため、インストーラーは相互運用DLLの以前のバージョンを上書きすることを拒否します。

ちなみに、「tlbimp /asmversion:2.1.0.180 MyLogic.dll」を使用して、コマンドラインでアセンブリを手動で生成しようとしましたが、次のようになりました。

  1. 私のプロジェクトは、手動で生成されたアセンブリでのビルドを拒否し、使用しているタイプはInterop.MyLogicLib.dllという非参照アセンブリで定義されていると言っています(手動で作成しているものには「Interop」プレフィックスがありません)。 )。認めざるを得ない、私はこれを理解していない。
  2. ツールにCOMDLLからバージョン番号を読み取らせるのではなく、事前にバージョン番号を知っておく必要があります
  3. それは手動のプロセスです、それはひどいです

とにかく、確かにVisual StudioはCOMバージョン番号を自動的にコピーできますか?

更新:お詫び; 別の質問を複製したようです。私は最初に既存のものを検索しました、正直なところ。私はそれを逃した。:(

4

1 に答える 1

3

アセンブリのバージョン番号は、DLL の VERSIONINFO リソースではなく、タイプ ライブラリのバージョン番号によって設定されます。IDL ファイルでライブラリの「バージョン」属性を正しく設定してください。

import "oaidl.idl";
import "ocidl.idl";
[
  uuid(5F3D3EAC-0F66-4199-B548-654A9174552B),
  version(2.1),
  helpstring("Something descriptive here")
]

library YourLib {
  // etc
};
于 2008-12-21T01:06:13.323 に答える