@ risposta di BrunoKlein funziona, e ho basato la mia risposta alla sua soluzione. Citando @BrunoKlein,
Per prima cosa devi utilizzare un progetto di applicazione WPF e modificare l'app.xaml in modo da poter sostituire la creazione della finestra.
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1">
<Application.Resources>
</Application.Resources>
</Application>
Nota che questa non è presente la proprietà StartupUri.
Ora, ancora più semplice (questo funziona in Visual Studio 2015 almeno), andare alle proprietà del progetto, e cambiare il tipo di uscita da Windows Application per Applicazione console. Ciò rende il progetto costruito come app per console, ma ha ancora le capacità di un'applicazione Windows.
(Class Library è evidenziato in questa foto, selezionare Applicazione Console invece)
l'avete fatto! Fatto.
Ora, invece di avere un void Main(string[] args)
, il metodo "principale" è il metodo della vostra autogenerata App
classe OnStautup
:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
string[] args = e.Args;
if (SomeConditionBasedOnTheArgs(args))
{
// Instantiate view, call View.Show()
}
else
{
// Process the args
}
}
}
Nota l'unica differenza tra questa risposta, e @ risposta di BrunoKlein è che questo lo farà sempre "mostra" una console se viene eseguita da explorer/start menu/desktop, ma se viene eseguita dalla riga di comando, eseguirà e dirige tutto il suo output standard su quella console, proprio come qualsiasi normale applicazione console.
fonte
2017-12-15 22:01:24
È possibile passare un flag per indicare la modalità della riga di comando e, quando presente, utilizzare AttachConsole per collegare l'app alla console che l'ha lanciata. Vedi http: //www.codeproject.it/Tips/68979/Attaching-a-Console-to-a-WinForms-application per esempio – user469104