Tuesday, 3 April 2007

First Post

Well, it has been a long time in finally making it out the door, but today I realised that I may have something useful to contribute to the world after all. So here goes, first blog post (for me) ever!

This week I have been on a wcf course with DevelopMentor. Today when the instructor Dominick Baier, was deleting for the umpteenth time the "#region" tags (these are inserted when you use the smart tag in Visual studio 2005 to implement an interface) I smiled to myself, because this is one of my pet hates too. Then he said "does anyone know how to switch this off?", and I thought to myself "it can't be that hard". Well it is... and it isn't

Actually, it turns out my way is the really hard boring way. As Steve pointed out in the comments, if you go to tools-->options-->text editor-->c#-->advanced then there is a "Surround generated code with #region" checkbox. This is clearly the easy way! Thanks Steve

If you are looking for how to change the default startup settings for a solution you need to head here.

If you know how to switch it off it is easy, if you don't, it is undocumented and google doesn't quite get the answer.

I found a pointer in one of the comments here. Needless to say the registry key is a red herring for the rtm version of Visual Studio 2005. In fact I couldn't even find the full path in the registry, which got me to thinking "where did they move all this config if it isn't here anymore"? Well one of the nice features of Visual Studio 2005 is that you can export your user settings. One of the things I remembered thinking, when I exported my settings was, "There is a lot more being exported than I see in the UI". Turns out that "ImplementInterface_InsertRegionTags" is exported with a value of 1. if you export your settings, set the value to 0 (zero) and (re)import the settings again, the "#region" tags disappear :)

So the exact steps:

  1. Backup your current visual studio settings (follow step 1..9 but select everything in step 6)
  2. Visual Studio --> Tools Menu
  3. Select Import and Export Settings...
  4. Select the "Export selected environment settings" radio button (default)
  5. Hit "Next"
  6. Make sure you have "All Settings"-->"Options"-->"Text Editor"-->"C# Editor" checked.
  7. Hit "Next"
  8. Select a file name and location
  9. Hit "Finish"
  10. Open the file in your pet xml editor
  11. Search for "ImplementInterface_InsertRegionTags"
  12. change the value to 0 (zero)
  13. Save the change
  14. Repeat steps 1 and 2
  15. Select the "Import selected environment settings" radio button
  16. Select "No, just import the new settings, overwrite my current settings"
  17. Hit "Next"
  18. Select or browse for the file that you made the changes to
  19. Hit "Next"
  20. Make sure you have "All Settings"-->"Options"-->"Text Editor"-->"C# Editor" checked.
  21. Hit "Finish"
  22. Restart Visual Studio (optional I think, seemed to work without it)
  23. Implement interfaces without regions :)

Note: This passed the "it works on my machine" test, but I make no guarantees.


Steve said...

I think you can also do this within the UI - go to Tools / Options, and then to Text Editor / C# / Advanced. In there, there is a "Surround generated code with #region" checkbox, which I think is what you've after

James Geall said...

so you can!

I searched for that and just didn't see it. I will update my post.

Steve said...

The spooky thing is that I've also spent the last few years manually deleting the damned #region blocks, and stumbled across the setting, purely by accident, just yesterday.