2

.NET 4.0 で 32 ビット COM オブジェクトを作成しようとしています。COM オブジェクトのコンシューマーは単純な JScript です。

Visual Studio の "Register for COM interop" 設定のチェックボックスを true に設定すると、すべて正常に動作します。JScript で COM オブジェクトを作成し、すべてのテスト コードを実行できます。

ただし、これを、Visual Studio を搭載していない 32 ビット マシン (.NET 4.0 を実行している) にデプロイできるようにしたいと考えています。だから私はinstall.batDLLを登録するための簡単なファイルを持っています:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm ComTest.dll /codebase /tlb:ComTest.tlb

32ビットのアセンブリなので、32ビットを使うように気をつけていますregasm.exe。これは、正常に登録されたことを示しています。/codebaseオプションを使用すると、既存の名前空間を踏んでいる可能性があるという警告が表示されますが、これは展開環境では問題になりません。

しかし、JScript でオブジェクトを作成しようとすると、

Could not create object named "COMTest".

私が行方不明になっていることを正しく登録している特別なVisual Studioが行っていることはありますか?

可能であれば、アセンブリに署名する必要はありません。

4

1 に答える 1

2

問題が見つかりました。(もちろん、SOに投稿した後でのみ...)

オブジェクトは問題なく登録されていました。この問題は、COM オブジェクトのコンストラクターに依存関係がないことにありました。

初期化コードをコンストラクターから Initialize() メソッドに移動すると、問題が明らかになりました。

Visual Studio は、それが実行されていたディレクトリのために機能しました。

于 2013-06-27T17:04:07.927 に答える