Change Default Namespace when creating Class in Folder (Visual Studio)

Viewed 30245

How can I change the default namespace used when you create a new class in Visual Studio?

Background: My solution has a project MyCompany.MyProject.Domain in which I have a folder "Model Base (Linq)" with a subfolder "Extensions" where I keep all partial class extensions.

MyCompany.MyProject.Domain
   + Model Base (Linq)
        + Extensions
           - Order.cs
           - Trace.cs 

When I create a new .cs file in there, the namespace gets set to MyCompany.MyProject.Domain.Model_Base\_\_Linq\_\_.Extensions, I only want it to be MyCompany.MyProject.Domain.Model though.

How can I change this default behavior?

5 Answers

If you already have one class under that folder with the desired namespace. You could take advantage of the Move type to ClassName.cs light bulb suggestion.

For example, you created Order.cs with the correct namespace MyCompany.MyProject.Domain.Model under the Extensions folder. If you want to add Trace class you do it like so:

enter image description here

Ctrl + . when the edit cursor is anywhere around the class Trace words will show the suggestion.

so... Ctrl + . Down Down Enter

Result:

enter image description here

Resharper has changed how they do this (as of VS2017).

  1. Add your folder.
  2. Add your first class.
  3. Manually alter the namespace to be what you want. (Usually that's removing the last piece from the namespace that represents the folder the class is in.)
  4. The namespace will now be underlined to say that it doesn't match the folder structure. Click on the the options to fix it, and select "Folder '...' do not introduce namespace".

Now your folder is set to expect the namespace for all new classes. However, when you add a new class to the folder, it now complains that it's not the namespace that you set it to in step #3 above.

So, you still need to manually alter the namespace, but at least resharper isn't trying to fight you anymore.

Related