【发布时间】:2017-01-07 22:12:46
【问题描述】:
我正在用 C# 编写游戏编辑器和游戏。有两个应用程序:游戏编辑器是一个 Winforms/SFML 混合体,游戏本身是一个 Windows 应用程序,只是在 SFML 中运行一个简单的游戏循环,带有一个非常标准的 Program.cs。
我希望能够在编辑器中启动游戏可执行文件来测试更改。效果最好类似于通过通常的多个启动项目方法从 Visual Studio 中启动两个应用程序。
现在,我猜这里有几个选项:
- 在某种后台线程中启动 Program.cs。我不想这样做,因为我更喜欢进程隔离。
- 通过带有 Process.Start() 的路径启动可执行文件。我不确定这是否像往常一样提供相同级别的调试支持。我对 Process 的调试模式调用的使用还不够多,无法知道这是否是我正在寻找的。li>
- 其他一些我不知道的简单方法?
做这种事情的标准程序是什么?
编辑:我被要求解释这不是Attach debugger in C# to another process 的重复我之前看到过这个问题并且仍然发布,因为那个问题专注于一般调试任何应用程序。我在这里有一些更专业的东西,因为我直接控制这两个应用程序;此外,这里选择的方法并不像那里的一些答案那样依赖互操作。
【问题讨论】:
-
我不清楚这与“在某种后台线程中启动 Program.cs”有何不同。你能帮忙澄清一下吗?
-
在您的解决方案中,放置 2 个项目(game_editor 和 game_itself)。在 game_editor 引用中,添加 game_itself 可执行文件。在 Game_Itself 中创建一些公共入口点,允许运行游戏并从 Game_Editor 的后台线程调用它。然后,您将“几乎”被孤立。
-
正如@Graffito 所写,但在另一个应用程序域中加载另一个程序集,在这种情况下为游戏。然后它仍然在同一个进程中运行,但默认情况下是隔离的,如果您愿意,您可以轻松地在 appdomains 之间添加通信(函数调用)。
-
您是否尝试过使用 VS attach 调试器的选项 2?这是我过去在类似情况下所做的。请记住,您可能从一开始就无法调试它。