代码之家  ›  专栏  ›  技术社区  ›  Mike Rosenblum

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

  •  8
  • Mike Rosenblum  · 技术社区  · 16 年前

    我想知道在Visual Studio 2008中调试代码时是否有一种完全锁定代码的方法。当作为64位应用程序运行时,代码文档会自动锁定,这是我非常喜欢的;但是,我的大部分代码都是为Excel编写的外接程序,这是32位的。结果是,即使我以“anycpu”为目标,vs主机也知道它在32位进程内运行,因此源代码是 在Visual Studio中承载代码时锁定。

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

    同样,当使用64位应用程序时,不会发生这种情况——代码被完全锁定。我非常喜欢完全锁定代码,原因至少有两个:

    1. 我在调试的时候可能会不小心碰到一个键之类的东西,这是我绝对不想做的。这很罕见,但这是个问题。

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

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

    这里有人有什么想法吗?当运行托管在Visual Studio中的代码时,如果使用32位CPU编译,是否可以完全锁定代码?

    关于这一问题的一些相关文章,但没有一篇直接涉及这一问题:

    提前感谢您的帮助或建议…

    迈克

    3 回复  |  直到 16 年前
        1
  •  3
  •   CleverPatrick    16 年前

    这是我能想到的最好的方法。这是可行的,但有些步骤你可能不想采取。

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

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

    其次,您需要将以下项作为一个双字添加到注册表中,并将其值设置为1:

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

    这个 仍然 不能完全工作。然后您需要做的是将该项目的源代码管理设置为VisualSourceSafe。(<--这是我假设您不喜欢的步骤。)

    然后重新启动VS2K8。

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

    现在,要在运行应用程序时使文件只读,请设置后期生成过程。这很容易。

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

        2
  •  5
  •   Laurent Etiemble    16 年前

    以下是我在Visual Studio 2005中使用的一个技巧(没有机会在Visual Studio 2008中进行测试,但应该可以使用):

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

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

        3
  •  4
  •   Adam G. Carstensen    16 年前

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

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

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

    祝你好运!

    亚当