2009-05-18 8 views
8

私はC#でCOM DLL(クラスライブラリ)を作成する方法を知っています。 C#を使用してCOM代用EXEを作成することは可能ですか?C#でCOM代理サーバー(exe)を作成する

これは、COMオブジェクトを起動してホスティングできるスタンドアロンサーバーであり、COMオブジェクトにアクセスできるようになります。

答えて

2

アウトオブプロセスCOMコンポーネントを使用する場合は、COM +でserviced componentsを使用してdllをホストすることをお勧めします。これはdllだけをサポートしていますが、dllを単に延期するシェルexe(スタンドアロン用)を書くことができます。

VBほど単純ではありませんが、機能します。

私は誰かが私に、より直接的な方法(なしのCOM +)を示す覚えていないが、私は私の人生のためにそれが何だったか覚えていない...

5

COMのデフォルトの代理プロセス - の事をホストCOM DLL、別名COM代理 - はdllhost.exeです。代理プロセスをC++で作成することは可能です。 This articleについて説明します。

しかし、これらのAPIは.NET Frameworkの基本クラスライブラリの一部としてラッパーで公開されていません。管理コードのみを書き込む場合は、別のコードが必要です。

私はカップルのオプションを参照してください。

  1. The Visual Studio SDKは、Visual Studioを拡張したい開発者向けの無料ダウンロードです。そのSDK内には、そのようなラッパーを持つクラスlibがあります。特に、the ISurrogate classを見てください。
    しかし、VS SDKのライセンスによれば、Visual Studioに拡張または付加価値のある製品の場合は、のみを使用することができます。私は弁護士ではありませんが、それはライセンスの私の理解です。これはかなり明確です。これらの用語は、VS SDKが一般的なアプリケーション構築には役に立たないことを意味します。
    残りの1つの質問は、です。どのようにしてVS SDKを技術的に使用して、C#コードのみを使用してCOMサロゲートを生成しますか?もう一度、ここで私は知らない。私はISurrogateラッパーを使用する際のガイドについて簡単にドキュメントを見ましたが、何も見つかりませんでした。
  2. this articleのコードを使用してください。
    この記事では、COMおよび.NET interopのさまざまな側面について説明します。この記事の最後には、C#で独自のCOMサーバーを構築するためのソースコードが用意されており、CoRegisterClassObject()と友人のすべてのp/invoke呼び出しが完了しています。
4

私は同じことを作りたかったし、優れたプロジェクト例CSExeCOMServerをオールインワンコードフレームワークで見つけました。実際には.NETとWindows APIへのネイティブ呼び出しによって通常のCOMサーバーロジックを再構築します。しかし、それはまだすべてが複雑すぎるように見えます。私はアウトオブプロセスサーバーで.NETオブジェクトをCOMとして公開するためのシンプルで高速な方法はなく、選択アーキテクチャではないと思います。

+0

サンプルのリンク。 –

関連する問題