Skip to main content

renaming default namespaces for VSTO projects in VS2008


So here is the scenario , you are starting a VSTO project and decided that your default namespace is ExcelAddInTesterApp . You created the project and started coding the project. After several days , your boss called and said "hey marvin , make use of this namespace OurCompany.ExcelAddInTesterApp , we have to add our company name to it got it?" . You get back to your machine thinking its just a simple property just like any project you've been working on. So you right clicked the VSTO project and hit properties . Boom! What the F@#$? The default namespace textbox is disabled!!!!



I've been through this and I googled for ways to do it and ended up with a blog from a Microsoft MVP telling me it can't be done because it is disabled. Then I thought of Refactoring, the beauty and grandeur of the renaming process. I selected the namespace and hit the refactor menu hoping that this would solve the problem . Unfortunately , it did not rather it displayed the message box below.


I have to do something, I cannot go back recreating theproject just to have the namespace changed. I tried the dirty Find Replace process. It worked . But since the default namespace of the project was not changed, adding new classes and items on the project would require a rename on the namespace. I would not want to do that, so I asked my officemate Fred if he have any ideas. He mentioned about tweaking the project file. So I opened the project file using notepad and manually changed some items that uses the name "ExcelAddInTesterApp". Below are images of what I've done.

So basically you will look for the "RootNamespace" item and change its value. Then search for the "GeneratedCodeNamespace" property and change it to a new value. Hitting save would save you a lot!! Look at the images below.

The default namespace was changed! So all new items added to the project would make use of the new namespace . What about the existing files that are using the old namespace , will they be automatically changed? The sad thing is that they are unchanged, so do the manual Find Replace process. Happy renaming….

Comments

Anonymous said…
Nice stuff! Thanks
Paul said…
This will break your add-in because the manifest is still referenced in to the old namespace.. Or atleast that is what happend on my project.
Anonymous said…
Really Nice...great work
Tom said…
Thank you, Works as expected!
Mikey said…
I did this, and then I did a clean/rebuild -- and it worked -- my manifest file appears to reflect the new namespace as well. Woot!
Mikey said…
I did this, and then I did a clean/rebuild -- and it worked -- my manifest file appears to reflect the new namespace as well. Woot!
Marvin Trilles said…
Glad it helped, man!
Anonymous said…
Thank you, thank you, thank you!!!
Anonymous said…
Saved me, even well after this was posted :)
murali karthik said…
Excellent post!!! The future of .net application development is on positive note. It offers huge career prospects for talented professionals all over the world. Training on .net technology will ensure good salary package. Best DOT NET Training institute in Chennai | DOT NET Training

Popular posts from this blog

Hiding Unwanted Python Folders and Files in Visual Studio Code

Visual Studio Code is a universal editor and pretty good at it. However, the explorer view maybe cluttered with the automatically generated folders and files confusing developers. Python is no different. Below are example files and folders generated by Python.

The __pycache__ folder and *.pyc files  are totally unnecessary to the developer. To hide these files from the explorer view, we need to edit the settings.json for VSCode. Add the folder and the files as shown below:
Copy and paste the lines below :

"**/*.pyc":{"when":"$(basename).py"},"**/__pycache__":true

Automatic Properties and Object Initializers in .Net 3.5

With the release of .Net 3.5 alongside with Visual Studio 2008 , new enhancements was again introduced . Some maybe well pronounced such as the inclusion of WCF, WPF , LINQ in .Net 3.0 and some just came unnoticed. If you have been accustomed of using a particular method or technique in implementing a certain code in .Net 2.0 , because of backward compatibility , you may not even notice that there are new ways of implementing it in .Net 3.5.

Here are two new concepts in .Net 3.5 that a developer may not notice ( at least in my opinion ) : Automatic Properties and Object Initializers . To illustrate these two , I am going to present the pre-.Net 3.5 way (.Net 2.0) and the .Net 3.5 way in creating a simple class with simple properties.

Automatic Properties

Creating a class can be tedious , especially when working with a list of properties , . One way to get around having to type the code for a private field and its public property getter and setter is to use a refactoring tool. However, …