2016-07-25 20 views
0

通常の使用中にコンソールが表示されないように、出力タイプを「Windowsアプリケーション」に設定して実行しているC#コンソールアプリケーションがあります。しかし、ユーザーがコンソールの出力のトラブルシューティングと表示をしたい場合に備えて、プログラムを任意でコンソールアプリケーションとして実行するかどうかを選択したいと思います。コンソールアプリケーションをExeおよびWinExeとして実行する

実行可能ファイルにコマンドライン引数を渡して、アプリケーションを「コンソール」モードまたは「Windowsアプリケーション」モードでユーザーの希望に応じて実行できますか?そうでない場合、アプリケーションがコンソールを表示するかどうかに応じて、他の方法で変更することはできますか?

+1

ここをクリックしてください:http://stackoverflow.com/questions/472282/show-console-in-windows-application – Styxxy

+0

AllocConsole()は役に立ちません。別のコンソールモードプロジェクトを作成し、Main()メソッドでProcess.Start + WaitForExitを使用してwinapp.exeを起動させます。その小さなプログラムの名前をwinapp.comに変更すると、その違いを伝えることはできません。 –

答えて

0

いいえ、できません。コンソールアプリケーションと非常に深いwinformsアプリケーションには基本的な違いがあります。アプリケーションがコンパイルされると、実行時に変更することはできません。

0

あなたはX-Y Problemだと思います。根本的な問題は、ユーザーが同じことを行うコンソールまたはWinFormsプログラムのいずれかを実行できるようにすることです。 1つの解決策は、両方として実行できる単一のプログラムを持つことですが、@roryapが指摘したように、これは不可能です。

第2の解決策は、プログラムのビジネスロジックを別のライブラリに入れることです。このライブラリにアクセスするコンソールプログラムと、このライブラリにもアクセスするWinForms GUIを記述できます。その後、ユーザーは実行するプログラムを決定します。これは、アプリケーションを複数のレイヤーに分割する実証済みの方法です。この道を行くことをお勧めします。ユーザーに面するレイヤー(コンソール、WinForms)は小さいことがわかります。将来的には、WebフロントエンドやWPFフロントエンドを作成する場合は、フロントエンド部分のみを記述すればよいので、ビジネスロジックレイヤーは変更されません。

関連する問題