問題タブ [comvisible]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
333 参照

vb.net - COM 可視イベントを VB.NET クラスに追加する最も簡単な方法は何ですか?

COM目に見えるイベントをVB.NETクラスに追加する最も簡単な方法は何ですか?

Visual Studio ツールボックスに何かありますか、macroそれともこれを行うものはありますか?

を使用してVS2005います。

編集: この記事http://msdn.microsoft.com/en-us/library/dd8bf0x3(v=vs.80).aspxでは、 aGuidAttributeが指定されています。これは設計時にプログラマーによって生成されますか、それとも他の場所で GUID と一致させる必要がありますか?

0 投票する
2 に答える
324 参照

c# - SoapException が ComVisible クラスでキャッチされない

古い VB6 クラスで呼び出される .NET で ComVisible ライブラリを開発しています。クラスで基本的に行うことは、Web サービスを呼び出し、応答を解析し、必要なデータを含むオブジェクトを返すことです。SoapExceptionWeb サービスは、間違ったパラメーターで呼び出された場合に を返すように設計されています。ここに私のコードの一部があります:

正しいパラメーターを使用して VB6 コードからこのメソッドを呼び出そうとすると、適切な応答が返されます。しかし、間違ったパラメーターで呼び出すと、VB6 プログラムで-245757( ) ランタイム エラーが発生し、C# コードの句でキャッチされていないように見えます (ただし、メソッドによって空のフィールドが返されることを期待します)。 .Object reference was not set to an instance of an objectcatchReplyObjectError

テスト C# プロジェクトを作成し、同じメソッドをコピーしました (つまり、.NET プラットフォーム内から同じ Web サービスを呼び出します)。この場合、SoapExceptionが適切にキャッチされていることを確認できます。

この動作は意図的なものですか? ComVisible クラス内でをキャッチする方法はありSoapExceptionますか (返信オブジェクトにエラー メッセージを含めたいので)?

UPD:私の VB6 コードは次のとおりです。

0 投票する
2 に答える
31450 参照

c# - [ComVisible] のデフォルト クラスとパブリック クラスの COM エクスポージャはどうなっていますか?

MSDN には、属性に関するこの記事があり[ComVisible]ます。を設定するとどうなるかよくわかりません[ComVisible(true)]

MSDNによると

既定値は trueで、マネージド型が COM から見えることを示します。この属性は、パブリック マネージ アセンブリ型を可視にするためには必要ありません。これらはデフォルトで COM に表示されます。パブリック タイプのみを表示できます。

したがって、パブリック型はデフォルトで COM に表示されると言われています。しかし、彼らはまた、設定によって公開タイプのみを表示できると[ComVisible(true)]も言っています。意味がありません: public 型がデフォルトで表示される場合、どのように設定[ComVisible(true)]すると public 型が表示されるのでしょうか? それらがすでに表示されている場合、どうすればさらに表示されるようになりますか?

おそらく私の理解は正しくありません。誰かが上記のステートメントに光を当てることができれば幸いです。

0 投票する
1 に答える
1230 参照

visual-studio-2010 - VS 2010 アセンブリの COMVisible クラスが com からまだ見えない

VS 2010 クラス ライブラリを作成しました。アセンブリに Com Visibility のマークを付けました。強力なキーでアセンブリに署名しました。クラスを作成し、エントリ ポイント メソッドを利用できるようにします。

ライブラリは、C# のテスト プロジェクトから正常に動作します。

c:\windows\microsoft.net\framework\v4.0.30319\regasm testdll.dll /tlb: testdll.tlb /codebase を介して、クラス ライブラリを gac に regasm します。

tlb ファイルを参照として VB6 プロジェクトに含めます。リソースの「参照」で見つけたので、そこにあります。

クラスをインスタンス化しようとすると...空です。public クラスを介して使用できるはずの public メソッドが表示されません。

さらに、CreateObject を介して「testdll.testclass」を呼び出してみましたが、「ActiveX コンポーネントはオブジェクトを作成できません」というエラーが表示されます。

現在、COM の可視化を行った他のプロジェクトがあり、違いを比較してみましたが、何も表示されません。なぜ機能しないのか理解できません。

手がかりはありますか?とても。

0 投票する
1 に答える
1421 参照

c# - CoCreateInstance を使用して C++ から C# dll を呼び出す

My ProjectAは、1 つのクラスを含むC#クラス ライブラリです。

生成されたファイルをRegister for com interop使用して確認しましたが、今まではわかりました。VS2010dlltlb

My ProjectBWin32 Dll単一cppファイルのアプリケーション:

...............

.......

この Dll をコンパイルすることができ、今のところすべて問題ないようです。

Win32 DLL を使用し、次の行の Add 関数を呼び出してみたときの質問:

合格することはありません. 問題は何ですか. 正しく登録されていませんか?

よろしくお願いします。

0 投票する
3 に答える
1871 参照

c# - COM イベント パラメータとしてバイナリ データを文字列で渡す

.NET から FoxPro (COM 準拠言語) にバイナリ データを取得しようとしています。ComVisible である .NET オブジェクトと、文字列パラメーターを持つイベントを持つイベント インターフェイスがあります。

以下の私の例では、0 から 255 までのすべての連続する文字を含む文字列を返すダミーの実装があります。疑問符に変換されます。154 を超えると、文字は再び変更されません。

この問題の原因は何ですか?残念ながら、FoxPro にはバイナリ データをネイティブに表現する方法がなく、文字列でカリー化する必要があります。

0 投票する
1 に答える
975 参照

c# - IDisposable に [ComVisible(true)] 属性があるのはなぜですか?

私が働いている大規模なレガシ ASP.NET アプリケーションを継承しました。私たちの会社は、FxCop を使用してすべての主要なルール違反を修正することを望んでいます。現在、普及していると思われるルールは次のとおりです。

CA1405:COM 可視型の基本型は COM 可視型である必要があります

アプリケーション内のすべての ASP.NET ページ/コントロールがこの規則に違反しているようです。最初は理由がわかりませんでしたが、最終的には次の継承チェーンが原因であることに気付きました。

IDisposableまた、次のように定義されていることにも気付きました。

要約すると、すべての ASP.NET ページ/コントロールは から継承しIDisposable、属性をIDisposable持ってい[ComVisible(true)]ます。これは、すべてのページ/コントロールがこの規則に違反することを意味します。

アプリケーションには何千ものページとコントロールがあり、何千もの違反があるため、これは私たちを悩ませています。「会社標準」の FxCop ルール セットがあるため、ルールを無効にすることはできません。FxCop は、アプリケーションのすべてのページにこの属性を追加することを望んでいるようですが、私は実際には興味がありません。

私の質問は、そもそもなぜ属性があるのですかIDisposable?[ComVisible(true)]

0 投票する
1 に答える
264 参照

com - COM Interop と ComVisible(true) に登録する

複数のプロジェクトで使用される共通ライブラリがあります。プロジェクト全体で複数のバージョンを管理するために、厳密な名前で署名しました。このライブラリには、[ComVisble(true)] プロパティを持つクラスがいくつかあります。ただし、このライブラリを COM 相互運用用に登録したくありません。しかし、「COM Interop 用にアセンブリを登録してください」というコンパイル エラーが表示されます。

私は .Net で COM を初めて使用します。ライブラリに [ComRegisterFunction] がある場合にのみ、COM 相互運用のために登録する必要があると思います。私が間違っている場合は修正してください。

COM Interop に登録すると、厳密な名前付けはプロジェクト全体で複数のバージョンを維持するのに役立ちません。

これについての助けをいただければ幸いです。

0 投票する
0 に答える
71 参照

c# - .net Com 可視クラスは使用できません

ライブラリを作成しましたが、そのための Com-wrapper を作成する必要があります。regasm は、com ライブラリの登録が成功したことを示しており、ライブラリを VBA 参照に追加していますが、メソッドとクラスは使用できません。

}

私はすべてチュートリアルで作成しましたが、結果はありません。

0 投票する
0 に答える
408 参照

vbscript - c#.netを介してdllからvbスクリプトにVB6クラスを渡す

VB6 クラス (.cls ファイル) を含む dll があります。

これらのクラスを使用する VB スクリプトがあります。

Microsoft Script Control ライブラリを使用してスクリプトを実行する C#.Net プログラムがあります (参照: http://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical -appr.html )

これが私のコードです:

MyClass は、[ComVisible(true)] を使用した VB6 クラスに相当する C# です。

COM に表示される独自の C# クラスを作成する代わりに、自分のコードで dll から VB6 クラスを使用してそれをスクリプトに渡すことができるかどうかを知りたいです。

更新: 必要なすべての COM コンポーネントを登録し、COM dll を参照できるようになりました。ただし、COM dll でクラスのオブジェクトをインスタンス化しようとすると、エラー 80040154 Class not registered at run-time が発生します