visual-studio-2010 - 是否可以在不暂停执行的情况下在 Visual Studio 2010 中编辑并继续?

标签 visual-studio-2010 xna hotswap edit-and-continue

我最近看了一点 Notch 的 Ludum Dare 直播。他在开发游戏时广泛使用 Eclipse 的热插拔功能。 (这是我所指的视频 http://www.twitch.tv/notch/b/302823358?t=86m30s )

我想对 C# 和 XNA 做同样的事情。幸运的是,Visual Studio 具有“编辑并继续”功能。但是,我想在它运行时编辑我的渲染代码而不是暂停它。

我可以设置 Visual Studio 来做同样的事情吗?我注意到有一个复选框 Break all processes when one process breaks .是否可以在另一个线程中设置我的渲染循环,以便在我进行更改时游戏继续渲染?

最佳答案

更新:这个答案现在可用 as a video .

我一直在努力寻找一种方法来做到这一点。我知道这并不能回答您的确切问题。但实际上,您正在寻找的是一个工作流,您可以在其中以零(或接近零)延迟进行代码更改,我想我已经找到了最接近 Visual Studio 的方法。 (因此避免了巨大的工程工作和处理“异常”项目)。

一旦你想到它,实现这个工作流程的方法实际上非常简单:

使用快捷键!

我想出的第一种方法是只使用设置断点的正常编辑和继续方法。只有使用键盘,您才能更快地做到这一点。这仅适用于循环调用的代码(例如:绘制/更新)。单击要修改的代码,添加断点(F9),断点几乎会立即被命中,修改您的代码,删除断点(F9),然后再次运行代码(F5)。

这很不错。您不必使用鼠标点击左侧栏中相对较小的“添加断点”目标。但它确实将输入焦点移动到了行首,因此您通常必须再次使用鼠标来修复它,然后才能开始编辑。

我想要更快的东西。所以我想出了一个更好的解决方案:

同样,使用键盘:按 Ctrl + Alt + Break 以“全部中断”。这几乎立即进入调试器,无需担心设置断点或您要修改的代码是否在循环中运行。这会将编辑器窗口和插入符号焦点更改为执行中断的文档,但是您可以通过按 Ctrl + - 来立即修复它以获取“向后导航”。

然后您可以进行编辑,只需按 F5 即可查看它们的实际效果。您只需使用鼠标一次(或根本不使用鼠标)即可开始选择您想要开始输入的位置 - 正如您所期望的那样。

诚然 Ctrl + Alt + Break 和 Ctrl + - 对于您希望能够非常快速地完成的事情来说是可怕的组合键。如果只有一个键可以按下会更好。

如果你有完整的 Visual Studio,你可以把它变成一个宏或加载项。 Express 没有这些 - 所以你能做的最好的就是修改你的键绑定(bind)(工具、自定义、键盘......)并将其绑定(bind)到两个相邻的键,你可以快速连续按下。或使用外部宏实用程序。

就我个人而言,我已经通过设置为鼠标上的备用按钮的宏设置了要连续按下的两个组合键(您似乎不需要两者之间的延迟)。效果相当好 - 因为我通常同时选择文本。稍后我可能还会添加一个键盘宏。

到目前为止,我已经确定了这种方法的两个小缺陷:

  • 当您再次运行应用程序时,Visual Studio 会为其提供焦点。如果它保持专注就好了。在我的宏中添加鼠标左键是快速重新编辑代码的部分解决方案。
  • “向后导航”不保留文本选择,只保留插入符号位置。
  • 关于visual-studio-2010 - 是否可以在不暂停执行的情况下在 Visual Studio 2010 中编辑并继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581969/

    相关文章:

    c# - Visual Studio 2010 (C#) : Blank before and after * when multiplying

    c# - DataGridViewCellStyle.Padding 属性不是填充?

    c# - 将 XML 文件添加到您的 XNA 项目

    java - 使用 Maven 查找和替换 jar 文件

    c# - Visual Studio 中是否有等效的 #pragma 标记( objective-c )

    c++ - 来自 2 个摄像头(用于立体视觉)的视频使用 OpenCV,但其中一个滞后

    XNA 4.0 ClickOnce 游戏在安装后无法运行

    c# - 基于组件的游戏设计中的共享字段

    android - 使用 Android 进行热插拔调试

    java - 在 Spring-Boot 项目中热到 Intellij 中的 HotSwap 代码?