私はWPFベースのインターフェイスを持つ小さなユーティリティを書いています。また、コマンドラインパラメータでプログラムを実行することで、ユーティリティが実行するタスクと同じタスクを自動化できるようにしたいと考えています。これらのタスクを両方とも1つのプログラムにまとめるのは悪い考えですか?私は、私のツールが別の共有ライブラリで実行する実際のロジックと機能を持っています。したがって、別々のものであれば、大量のコードを複製することはありません。GUIプログラムとコンソールアプリケーションを単一のEXEに結合するのは悪い考えですか?
私は、私は別のホストのプロジェクトから呼び出される機能クラスライブラリを作成します。この場合、
private void Application_Startup(object sender, StartupEventArgs e)
{
if (e.Args.Length > 1)
{
//Go do automated tasks
}
else
{
//open GUI
Window window = new Window();
this.MainWindow = window;
window.Show();
}
}
しばらくの間これをやってきたアプリケーションがあります...なぜそれは悪い考えですか?ハンマーが必要な場合は、ハンマーを使用してください。 – Tim
1つの問題は、完全な動的リフレクションベースではなく、起動時にGUIサポートがバインドされている場合、コンソールアプリケーションの実行場所を制限していることです。あなたはそれを遅くしているかもしれません。おそらく.net/wpfでは大きな問題ではありませんが、他のコンテキストでは問題になる可能性があります。 – DrC
Visual Studioで使用されているハックにいつでも従うことができます:) GUI用とコンソール用の2つの実行可能ファイルがあります。 .comが.exe(デフォルトのPATHEXT)より優先されるため、コンソール実行可能ファイルは.com拡張子(PEであるにもかかわらず)を取得します。したがって、cmd.exeから実行すると、コンソールのバージョンが表示され、.exeを実行するとGUIが表示されます。 –