2017-07-14 184 views
1

我正在使用Windows Forms在C#中编写应用程序。有时我改变了我的项目设置,并将'输出类型'设置为'控制台应用程序'。将C#编译为2个exe文件

我想知道是否有可能将项目作为Windows窗体应用程序和控制台应用程序编译为2个.exe文件?

+1

不,这是不可能的,因为这两个项目是完全不同的。但是,您可以从控制台应用程序内创建表单,并具有指示您想要打开GUI的命令行参数。 – HimBromBeere

+0

您可以检查某些特定的可执行参数,并在特殊标记的情况下使用'AllocConsole'来分配控制台。 –

回答

10

你应该把你的逻辑放入一个DLL并创建两个应用程序:一个控制台应用程序和一个winforms应用程序。这将是最干净的,在我看来是最好的方式。

所以你可以处理不同的需求并以最好的方式为每种应用类型处理它们。

1

要扩大Mighty Badaboom's answer,想象你正在实施一个井字游戏游戏。

一个好的设计是在其自己的类库(dll)中实现与用户界面分离的所有游戏逻辑。这里面类库,你可以定义基本的共同行为的任何兼容的用户界面必须提供:

public interface IUserInterface 
{ 
    void ShowBoard(); 
    Move GetPlayerMove(Player player); 
    void ShowWinnerAnimation(Player player); 
    void ShowDrawAnimation(); 
    ///etc 
} 

而现在,你可以实现不同的用户界面(控制台,网页,Windows窗体等)可以注入通过接口到您的Game对象:

IUserInterface myUserInterface = new WindowsFormsInterface(); 
var game = new Game(myUserInterface); 
game.Run(); 
+0

不错的例子:) –