【问题标题】:Is there a way to make a region of code "read only" in visual studio?有没有办法在 Visual Studio 中使代码区域“只读”?
【发布时间】:2009-01-25 19:45:26
【问题描述】:

每隔一段时间,我都会修改一段代码,我想“锁定”或将代码区域设为“只读”。这样,我可以修改代码的唯一方法是先解锁它。有没有办法做到这一点?

【问题讨论】:

  • 也许你可以为VS写一个插件来检查区域扩展时区域名称是否以某个关键字开头?
  • 写一个VS插件有多难?
  • 我不知道。我以前从来没有做过。对不起。
  • 您可能想从 DevExpress (devexpress.com/Downloads/Visual_Studio_Add-in/DXCore) 中检查 DXCore

标签: visual-studio readonly


【解决方案1】:

在许多情况下最简单的方法是使其成为部分类型 - 即,其源代码分布在多个文件中的单个类。然后,您可以使一个文件只读而另一个可写。

要声明部分类型,您只需在声明中使用partial 上下文关键字:

// MyClass.First.cs:
public partial class MyClass
{
    void Foo()
    {
        Bar();
    }

    void Baz()
    {
    }
}

// MyClass.Second.cs:
public partial class MyClass
{
    void Bar()
    {
        Baz();
    }
}

如您所见,它最终似乎源都在同一个文件中 - 您可以毫无问题地调用在一个文件中声明的方法。

【讨论】:

  • 我想过这个,但我更愿意将课程保存在一个文件中。
  • 在这种情况下,你就不走运了。将其放在 #region 中,上面写着“警告:请勿编辑”并折叠该区域。
【解决方案2】:

编译成库dll,供其他项目参考。

【讨论】:

    【解决方案3】:

    将代码拆分成单独的文件,然后检查到源代码控制系统中?

    【讨论】:

      【解决方案4】:

      鉴于您对部分课程的反驳......我无法在单个文件中知道,缺少文档。其他选择?

      • 继承;但是基类中的受保护代码(在您控制的程序集中);继承者只能调用public/protected成员
      • postsharp - 将受保护的逻辑粘贴在外部声明的属性中

      但是,这两个仍然需要多个文件(可能还有多个程序集)。

      【讨论】:

        【解决方案5】:

        我考虑过这一点,但我更愿意将课程保存在一个文件中。 – 丹明

        对不起,麦克。作为 SVN 预提交的一点巫术可能会抓住它,但除此之外没有其他解决方案
        // 如果您更改此代码,您将被解雇

        【讨论】:

          【解决方案6】:

          如果您使用的是版本控制系统,这完全没有必要。因为一旦您将其签入,无论您编辑代码的哪一部分,您都可以随时进行差异化或回滚。哎呀,您可能会不小心清除了所有源代码,但仍然可以将其取回。

          由于您想锁定代码的某些部分,我得到了一个非常糟糕的“code smell”。我猜也许你在一个类中做的太多了,在这种情况下,将它重构为一组适当的类。事实上,在 Visual Studio 存在 10 多年后,此功能仍不可用,这表明您可能希望这样做是设计不佳的结果。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-08-19
            • 2011-04-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-13
            • 1970-01-01
            相关资源
            最近更新 更多