Возможно, вам будет проще решить проблему и использовать приложение Windows Forms с консолью. Для этого создайте приложение Windows Forms в Visual Studio. Удалите форму по умолчанию, которую он создает. Откройте файл program.cs и удалите код, который пытается создать окно, и замените его кодом своего консольного приложения.
Теперь хитрость в том, что вам нужно вручную создать консоль. Вы можете сделать это с помощью этого вспомогательного класса:
public class ConsoleHelper
{
/// <summary>
/// Allocates a new console for current process.
/// </summary>
[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();
/// <summary>
/// Frees the console.
/// </summary>
[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();
}
Теперь в начале вашей программы (перед тем, как попробовать Console.Writeline's), вызовите
ConsoleHelper.AllocConsole();
И в самом конце вызова вашей программы
ConsoleHelper.FreeConsole();
Теперь у вас есть консольное приложение, которое может создавать диалоги WinForms, включая SaveFileDialog.