C# 阻止Visual Studio编辑器重新格式化#如果#恩迪夫

C# 阻止Visual Studio编辑器重新格式化#如果#恩迪夫,c#,visual-studio,visual-studio-2008,C#,Visual Studio,Visual Studio 2008,假设我在C#中有以下代码: 有没有办法防止#if和#endif行移到最左侧?我找不到这些的任何设置,但我希望有一个注册表设置来控制它的工作方式 任何建议都将不胜感激-这种行为让我发疯,因为我的代码有几百个这样的块,它们不断被VS打破。我一直使用的一种风格是像这样给#标记添加空间 void Func () { int i = 3; # if DEBUG ... # endif for ( int j = 0; j < i; j++ ) {

假设我在C#中有以下代码:

有没有办法防止
#if
#endif
行移到最左侧?我找不到这些的任何设置,但我希望有一个注册表设置来控制它的工作方式


任何建议都将不胜感激-这种行为让我发疯,因为我的代码有几百个这样的块,它们不断被VS打破。

我一直使用的一种风格是像这样给#标记添加空间

void Func ()
{
    int i = 3;

#   if DEBUG
    ...
#   endif

    for ( int j = 0; j < i; j++ )
    {
        ...
    }
}
void Func()
{
int i=3;
#如果调试
...
#恩迪夫
对于(int j=0;j

..if块看起来与代码正确对齐,重新格式化的代码不会移动预处理器标记。

它的格式非常好:)#语句不是代码的一部分,因此不应缩进。这是您的首选。当您有数百个这样的函数(平均每个函数5-9个)时,读取代码就非常困难。要找到函数的开头/结尾几乎是不可能的。这里有一个建议-@hatchet,当我现有的源代码库中有几千个源文件时,它不会有帮助。另外,有些函数在某些情况下会在多个上下文中调用,因此我不能将函数标记为仅调试。您是否看过“StyleCop分析C#源代码以强制执行一组样式和一致性规则。它可以从Visual Studio内部运行,也可以集成到MSBuild项目”@com3lius:我现在只看到了您的建议,谢谢-我试试看。我不确定我是否喜欢它,但它看起来仍然比破坏布局要好。
void Func ()
{
    int i = 3;

#if DEBUG
    ...
#endif

    for ( int j = 0; j < i; j++ )
    {
        ...
    }
}
void Func ()
{
    int i = 3;

#   if DEBUG
    ...
#   endif

    for ( int j = 0; j < i; j++ )
    {
        ...
    }
}