さて、私は狂ってしまいます。私は単純な.netアセンブリをCOMオブジェクトとして使用するために表示しようとしていますが、動作していません。私はたくさんの異なるアプローチを試してきましたが、どれもうまくいきません。COM相互運用性のために私の.netアセンブリを登録しても、私のメソッドは公開されません。
Dim o
o = CreateObject("MyNamespace.MyClass")
msgbox o.Test()
私のC#コード:これまでのところ私が持っている最も近い、私はこのようになりますテストとしてVBScriptを持っているなど、手動で登録し、
属性、インタフェースの最低額を有するものです - 私のAssemblyInfo.csに属性を追加し、私はまた、「COM相互運用機能のために登録する」をチェックしている私のプロジェクトで
using System;
using System.Runtime.InteropServices;
namespace MyNamespace
{
[ProgId("MyNamespace.MyClass")]
public class MyClass
{
public string Test()
{
return "teststring";
}
}
}
(VS2008)私が選択した「組立COMが見えてください」:このようになります。
私は実際の名前空間+クラス名を指定する限り、ProgIdが実際には何の違いもないことが分かります。
問題は - 私のCreateObjectはうまくいっていますが、Test()メソッドが見つかりません。実際には、私はDLLを取って、tlbを抽出し、私はすべての方法が表示されないことを期待する場合。
私が手にエラーがこれです:
C:\inetpub\wwwroot\ASPTest\testrun.vbs(3, 1) Microsoft VBScript runtime error: Object doesn't support this property or method: 'Test'
私は、任意のフィードバックをしてみたいが、ちょうど私がしようとしてきたものを知っているように。私はクラスでGUIDとAttributeGuidを使いこなし、COMVisibleをクラスに明示的に定義しました。私はCOM相互運用機能に登録せず、代わりにregasm/codebase/regfileを実行しました。
私のテストのほとんどは、署名されていないアセンブリの周りを回っていますが、私はstrongname/keyで試したエラーを特定しようとしましたが、何もしませんでした。
誰でも問題を見つけるのを手助けできますか?
あなたは厳密な名前を持つアセンブリに署名した「オブジェクトはこのプロパティまたはメソッドをサポートしていません」のようなエラーを超える完璧なソリューションを提供します(SN .exeユーティリティ)? – sharptooth
私は強い名前(sn.exeでキーを作成する)と一緒に試してみました。実際にatm私はアセンブリに署名しない場合、さらに私が得る。 –