2012-10-26 37 views
8

可能重複:
How to force indentation of C# conditional directives?
Can visual studio automatically indent/format preprocessing directives?如何在代碼中縮進#if指令?

在下面的示例代碼中有一個#if的指令,但注意到缺乏縮進:

   else 
       { 
#if DEBUG 
    Debug.Print(ex.Message); 
#endif      
        return null; 
       } 

我知道這可能是這樣的一些開發實踐,但誠實地在VS.NET內我不在乎,並希望它與我的代碼一致。有沒有辦法讓#指令自動縮進與VS.NET中的其他代碼?

謝謝!

+0

可能的重複:http://stackoverflow.com/questions/10548319/can-visual-studio-automatically-indent-format-preprocessing-directives,http://stackoverflow.com/questions/1321228/how-to- force-indentation of c-sharp-conditional-directives –

+1

您還應該考慮使用ConditionalAttribute(http://stackoverflow.com/questions/3786827/alternatives-to-conditional-compilation-in-c-sharp) – Surfbutler

回答

2

我試圖尋找的東西在這裏:

選項 - >文本編輯器 - > C#

但不幸的是它似乎VisualStudio中沒有內置的任何內容都允許您以這種方式縮進預處理器指令。不過谷歌搜索我發現this answer,它建議使用StyleCop。希望這可以幫助你。

2

我什麼都不知道,但#pragmas不應該縮進,因爲它們不受代碼的影響。當然可以縮進Debug.Print。

+5

不要認爲縮進會影響C#中的任何代碼。它只是爲了可讀性。 – rizalp1

+2

同意。我的意思是編譯指示不受任何以前的正常代碼行的影響,所以不應該縮進,就好像它們一樣。 – Surfbutler

3

我不確定你是否可以用Visual Studio本身來做到這一點。您可能不得不使用像 StyleCop這樣的插件。請參閱http://stylecop.codeplex.com/

我明白您爲什麼希望縮進完成 - 因爲條件指令目前看起來相當混亂。但是,就目前的縮進而言,優點是可以很容易地被正在閱讀你的代碼的人看到。由於條件指令可以在很大程度上改變代碼流,因此它現在可能沒問題。否則,你有插件選項:)