2011-09-15 30 views
0

プロジェクト全体で使用しているdllを構築しました。さて、いくつかの理由から、実行可能ファイルとしてそれを持つ必要がありますが、問題はイベントをスローすることによって他のソリューションと統合されるという問題です。プロセス間でのメッセージの受け渡し

実行可能にすると、イベントの機能を維持するためにコードをどのように変換できますか? (それはもはやexeを直接参照することはできません。それはプロセスとして呼び出す必要があります)

+0

アセンブリはイベントをスローすることはできません。コードクラスのメソッドだけが、アセンブリではなくイベントをスローできます。 –

+0

したがって、元のdllアセンブリのほとんどすべてのコードをそのまま残しながら、本体を別個の実行可能アプリケーションに移行する必要があるコードを動かすことができます。 –

答えて

0

exeアセンブリの参照とdllアセンブリ以降は何もしないでください。他のものはあなた次第です。実行中に実行可能ファイルにアクセスすることに気付いている場合は、この実行可能ファイルを直接参照する別の起動可能な実行可能プロジェクトを作成し、古い実行可能ファイルを使用して新しい実行可能ファイルを実行します。

2番目の質問、なぜそんなに難しいことをするのですか?プロジェクト間でコードを共有するためにdllアセンブリを使用しないのはなぜですか?

要約すると、元のアセンブリdllにすべてのコードをそのまま残しながら、メイン(..)本体を必要とするコードを別々の実行可能アプリケーションに移動できます。

+0

ライセンスの問題です。私たちが構築したアセンブリは、さまざまなシナリオでは変わらずに動作しますが、ソリューション内でビルドするには、すべての開発者がそのdllの各コンポーネントのライセンスを持っている必要があります。したがって、.dllからexeファイルを作成すると、そのファイルにライセンスが含まれているため、exeのすべてのユーザーが個別のライセンスを取得する必要はありません。 – veljkoz

+0

@veljkozわかりません。ライセンスが必要なものは何ですか?もしあなたの*コードがDLLかEXEかどうかに関わらず、サードパーティライブラリ(DLL)であれば何も変わらず、DLLは独立したエンティティです。 DLLは決して* EXEに含まれません。 –

+0

@JonathonReinhartソリューションでサードパーティ製のDLLを使用している場合は、ソリューションを構築して展開するためのライセンス(infragistics、telericなど)が必要です。実際に設計しているコンポーネントであれば問題ありません。しかし、あなたのソリューションの一部であり、もはや設計を必要としないコンポーネントがあり、独自のライセンスを使用するすべての開発者を必要とせずに、それらを完全に配布したいと考えています。したがって、ライセンスを参照する必要があるdllを構築する代わりに、代わりにexeを出力することができます。 – veljkoz

1

プロセス間通信については、名前付きパイプを参照してください。