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

Mik*_*lum 10 c# debugging editing visual-studio-2008 edit-and-continue

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

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

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

  1. 我可以在调试时不小心碰到一个键或类似物,我绝对不想这样做.这很罕见,但这是一个问题.

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

在上面的问题#2中,单元测试失败,这很好 - 我的不好 - 但是将所有击键发送到代码模块并破坏我的代码是完全不可接受的.

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

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

在此先感谢任何帮助或想法......

麦克风

Lau*_*ble 5

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

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

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


Cle*_*man 3

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

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

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

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

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed  
Run Code Online (Sandbox Code Playgroud)

仍然不能完全发挥作用。然后您需要做的就是将该项目的源代码管理设置为 Visual Source Safe。(<-- 这是我假设您不喜欢的步骤。)

然后重新启动VS2k8。

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

现在,要在运行应用程序时使文件只读,请设置构建后流程来执行此操作。这很容易。

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


归档时间:

查看次数:

3981 次

最近记录:

15 年,8 月 前