有没有办法*完全*禁用编辑并继续?

我想知道在Visual Studio 2008中调试它时是否有办法完全锁定我的代码。代码文件在作为64位应用程序运行时自动锁定,我更喜欢; 但是,我的大部分编码都是为Excel创建加载项,这是32位。 结果是,即使我以’AnyCPU’为目标,VS主机也知道它在32位进程内运行,因此,当代码在Visual Studio中托管时,源代码未被锁定。

我可以通过转到“工具”>“选项”>“调试”>“编辑并继续”,然后取消选中“启用编辑并继续”复选框来关闭“编辑并继续”。 但是,这并不能完全锁定代码。 这样可以防止代码中的任何编辑在当前运行中执行,但它不会阻止鼠标单击或击键实际更改代码。

同样,当使用64位应用程序时,这不会发生 – 代码完全被锁定。 我非常希望代码完全锁定至少有几个原因:

  1. 调试时我可能会意外碰到一个键或类似物,我绝对不想这样做。 这很罕见,但这是一个问题。

  2. 我的许多自动化测试通过SendKeys驱动用户界面。 但是,当使用调试器逐步完成这样的测试时,我有时会忘记某些方面涉及SendKeys,这意味着击键最终会被发送到Visual Studio IDE而不是Excel。

在上面的问题#2中,unit testing失败,这很好 – 我的不好 – 但是将所有键击发送到代码模块并破坏我的代码是完全不可接受的。

这里有没有人有任何想法? 在针对32位CPU编译时,可以在Visual Studio中运行托管时完全锁定代码吗?

关于这个问题的一些相关post,但没有一个直接解决这个问题:

  • 如何:启用和禁用编辑并继续
  • 在Visual Studio 2008中进行调试时,“不允许对64位应用程序进行更改”
  • 如何在Visual Studio的调试模式下启用文件编辑?
  • “编辑并继续”如何在Visual Studio中工作?
  • 我们可以在运行应用程序时编辑代码
  • 在调试时编辑C#

提前感谢任何帮助或想法……

麦克风

这是我能想到的最好的。 它有效,但您可能不想采取一些步骤。

本质上,该技术是在运行应用程序时将项目的文件设置为只读,然后在应用程序结束后将它们设置为可写。

但是,在VS2k8中,默认情况下,将文件设置为只读仍允许您编辑文件。 您需要先在工具>选项>环境>文档中关闭“允许编辑只读文件…”设置。

其次,您需要将以下密钥作为DWORD添加到注册表并将其值设置为1:

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed 

仍然不会完全奏效。 您当时要做的是将该项目的源代码管理设置为Visual Source Safe。 (< - 这是我假设你不喜欢的步骤。)

然后重启VS2k8。

此时,如果您将其中一个文件设置为只读,您将看到Visual Studio根本不允许您编辑此文件。 当您尝试时,它会播放您计算机的exception音乐。

现在,要在运行应用程序时将文件设置为只读,请设置构建后的过程以执行此操作。 这很简单。

更难的是,一旦你的应用程序运行完毕,就将它们设置为可写。 最简单的解决方案可能是批处理文件快捷方式。

这是我在Visual Studio 2005下使用的一个技巧(没有机会在Visual Studio 2008下测试,但它应该工作):

  • 打开可执行程序集的属性
  • 转到“ 调试”选项卡
  • 选中“ 启用非托管代码调试”复选框

即使遇到断点,代码文档也应保持锁定状态,任何更改它的尝试都应触发弹出窗口“启用非托管调试时不允许更改”

嘿那里 – 对不起,我无法帮助你完全锁定你的代码 – 我有相反的愿望:在调试期间完全解锁它,但我可以帮你解决你的第二个问题。

我建议您在发送任何密钥之前考虑检查活动窗口,如果活动窗口不是您的目标站点,请暂停执行测试,直到返回该窗口的焦点。

我知道这不是你想要的解决方案,但防止其他类似问题可能不会有什么害处。

祝你好运!

亚当