2011-08-02 13 views
2

通常、このようにするのは理にかなっていません。C#コンソールアプリもクラスライブラリとして機能する可能性がありますか?

つまり、C#のコンソールアプリケーションもクラスライブラリとして機能する可能性がありますか?

+0

これまでに何を試しましたか?別のプロジェクトをWindowsアプリケーションまたはWebアプリケーションとして作成し、コンソールアプリケーションを参照して、公開クラスを使用して、期待どおりに動作するかどうかを確認してください;-) –

+0

@Davide Piras:VSの古いバージョンで試しました。私はまだMSツールが今のところ能力を発揮しているのに慣れています。私は最初に尋ねると思った。 – sgtz

答えて

6

はい、可能です。パブリックタイプまたは[assembly:InternalsVisibleTo(...)]がある限り。

VS2005では、IDEはEXEを参照することを嫌っていましたが、これはもはやケースではありません。参照を追加し、exe(またはプロジェクト)を指定するだけです。

最終的には単なるアセンブリです。 PEヘッダー/ローダーは最小限に抑えられており、ファイルに重要な注意を払わないため、exeファイルであるという事実は事実上無関係です。

exeをライブラリとして使用すると、Main()(エントリポイント)は呼び出されません。

+0

私はこれが事実であるべきだと思った。一度噛んだら。 ty。 + 1.All()。 – sgtz

3

これは別のプロジェクトで参照するだけです。

2

はいコンソールアプリケーションを参照し、その中のパブリッククラスを使用することは可能です。しかし、技術的には機能的ではあるが、ベストプラクティスとはみなされない。

よりよい解決策は、次のことを持っているだろう:

  • MyClassLibrary.dll
  • によって参照される

  • MyConsoleApp.exe
  • MyOtherConsoleApp.exe
  • MyOtherClassLibrary.exe
2

短い答え:はい。唯一の違いは、コンソールアプリケーションにエントリポイント(Mainメソッド)があり、別々に実行できることです。

関連する問題