views:

244

answers:

2

I finally figured out that Visual Studio keeps track of how you create a project (in other words which project template you select initially) and filters your options later based on that initial decision. The information is kept in the *.csproj file as a <ProjectTypeGuids> element.

Other than just editing the *.csproj file, is there a "right" way to change a project type for an existing project?

Considering the significance of that setting it seems likely there's a place in the GUI to change it, but I couldn't find one. Thanks!

+1  A: 

Why do you want to change this?

I would just add another project to the solution with the one you want, move the files, then remove the original project.

Daniel A. White
Right click on a project and bring up the "Add" menu. What choices do you have? If you don't create the project using one of the WPF templates you won't have things like "User Control" or "Resource Dictionary" as options. If you didn't start as a WPF project, you won't even have "Resource Dictionary" as an option under "New Item...".I've done the shuffle you describe, that it's a pain if there are lots of items and the whole thing is under version control. All that to simply change the kind of project seems silly.
Scott Bussinger
+1  A: 

Small correction: Visual Studio does not keep track of the project template used to create a project. The project system is largely unaware of the initial template used for a project. There are several items in the project system (Project Type for instance) which have the same name as specific templates but this is a coincidence and the two are not definitively corrected.

The only thing that can really be changed in terms of the project type is essentially the output type. This can have value Class Library, Console Application and Windows Application. You can change this by going to the project property page (right click Properties) and change the Output Type combo box.

It is possible to have other project types supported by the project system but they are fairly few and are not definitively associated with a project template.

JaredPar
You're correct that VS doesn't remember which specific template was used to create the project, but it absolutely classifies the project as being of a particular kind based on information in that template and apparently there's no UI to fix it once created. See my comment to Daniel above for an example of the effects of this choice.When I wrote my original question I had mentioned the XML element the information in stored in, but I see StackOverflow system removed it. I'll edit it back in, but it's the <ProjectTypeGuids> element in the *.csproj file that stores the kind of project.
Scott Bussinger