Visual Studio: can I copy a project's properties to use in another project?

Visual Studio-2010Visual C++

Visual Studio-2010 Problem Overview


I've added several directories, libraries such as matlab, opencv, etc to compile my current C file in Visual Studio project.

All my upcoming projects will require the same setup/properties. Do I need to setup my each project's properties individually or I can do something to apply it to all ?

Visual Studio-2010 Solutions


Solution 1 - Visual Studio-2010

Try using Property Sheets. These can create a single properties file that can be inherited by multiple projects.

  1. Use "View > Other Windows > Property Manager" to bring up the Property Manager. It will show your projects and configurations.

  2. Right click a configuration, and select "Add New Project Property Sheet...". You can name it, and select a location that works for all your projects.

  3. Once created, you can edit its properties just as you would a build configuration.

  4. To use that property sheet as the basis for other projects, just right click the configuration or project, and select "Add Existing Property Sheet...". Browse to where you saved the original sheet, and it will be inherited.

Any changes to the original sheet will be applied to any project that inherits it, unless they are overridden. If you go into properties higher up the chain, properties that override will have bold type for their values. To get them to always use the value in the base sheet, there will be a "inherit from parent or project defaults" option where applicable.

Solution 2 - Visual Studio-2010

I am using AtmelStudio 6.1, which is built on Visual Studio 2010 (I believe), and yet doesn't have any Property Manager that I can find. So, the hackish system I use is:

  1. close (or at least unload via the contextual menu) the project whose configuration you want to modify

  2. open its .cproj file (which is XML) in any text editor (VS works nicely),

  3. MAKE A BACKUP COPY OF IT SOMEWHERE ELSE JUST IN CASE,

  4. open the .cproj file of the project whose configuration data you want to copy,

  5. look for the configuration data you want. Configurations are inside of PropertyGroup tags; for example, in my case it looks like

    <PropertyGroup Condition=" '$(Configuration)' == 'Preprocess only' "> 
    

for the configuration named "Preprocess only". Copy from the beginning of that tag until the end of the corresponding

    </PropertyGroup> 

tag. 6. Paste the block into the destination .cproj, just after other

    </PropertyGroup>

tag. Make sure that the name of the configuration is unique in this file. Save.

You're finished. Now open the project normally in VS and you'll be able to select the added configuration.

Solution 3 - Visual Studio-2010

For Visual Studio 2010+ you can make a Project Template.

If you choose to automatically add the template to Visual Studio in the template creation wizard, when you create/add a new project, the template will appear (after restarting Visual Studio). Projects created with this template will have the same project properties!

To add source code files to the template, the easiest way is to rearrange the source code files in solution-explorer to be in the root (not under any folder). After doing that, THEN generate the template.

Why? Sometimes putting your files under the default Source Code solution-explorer folder (not in file explorer, the .project.filters label) will fail to copy the source file to the template, you'll see "the document cannot be opened. it has been renamed deleted or moved" when you try to use the template and the file you wanted in the template will NOT be in the file explorer.

If you do want solution-explorer folders, you will have to add them manually to the template by unzipping the template folder, making changes, then re-zipping it again.

For example, literally copy and paste the source files you want the template to have in the template folder and edit the .vstemplate file. M$ Doc on template editing.

<TemplateContent>
<!-- put new file references here and/or in your .vcxproj .vcxproj.filters --> 
 TargetFileName="HelloWorld.cl">HelloWorld.cl</ProjectItem>
      <ProjectItem ReplaceParameters="false" 
</TemplateContent>

Related questions:

How do I use VS template I created?

How can i load a template I have created in Visual Studio?

How copy visual studio project?

Simply copying and pasting entire projects and solutions is not recommended for complex or shared projects since various GUID s and filenames may overlap - causing bugs.

Solution 4 - Visual Studio-2010

For MSVS 2017, the process @AaronMK mentioned doesn't work. Instead do the following:

  1. View -> Other Windows -> Property Manager
  2. Add New Property Sheet.
  3. Edit whatever options you want there.
  4. Give it an appropriate name so that you remember it.
  5. Right button on it and hit "Save {myPropertySheet}"
  6. It would be wise to place it alongside the default property sheets and that you can add it whenever you want (by Property Manager -> Add Existing Property Sheet -> Browse to its location). This directory is: C:\Users\{myUsername}\AppData\Local\Microsoft\MSBuild\v4.0

Alternatively you can edit the default property sheets and use these by default. I wouldn't advice it though as they provide a fallback option in case you mess up. So make backups first if editing default files.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLouisView Question on Stackoverflow
Solution 1 - Visual Studio-2010AaronMKView Answer on Stackoverflow
Solution 2 - Visual Studio-2010hmijail mourns resigneesView Answer on Stackoverflow
Solution 3 - Visual Studio-2010MrPickles7View Answer on Stackoverflow
Solution 4 - Visual Studio-2010KeyC0deView Answer on Stackoverflow