简体   繁体   中英

How to make copy of Visual Studio 2019 project?

I have a Visual Studio 2019 project. Was asked to make trial changes. Do not want to alter current project. Is there any way to copy a project so I do not have to start over from scratch?

Searched here and other forums and documentation and cannot find solution.

Short answer: you can very simply copy the directory in which your project reside on disk. Open the new directory and double click on the .csproj file and you are now working in your new copy of the project. But, if you want to do that in a more professional and maintainable way, please read on...


The best way to do that in a more robust way is using Git.

In the bottom right corner of Visual Studio find the "Add to Source Control" command, click it, then choose Git. Now the command says "master", that is your main "copy" of the project: in Git, this is called your main "branch".

Now click on it, choose "New branch", give it a name (eg: trial), leave the checkbox "Checkout branch" checked, then click on "Create branch". Now the command in the right bottom has changed to "trial".

Now you have another copy of your project: you can work on it, save your work on local disk. When you are ready to save it in Git, press the pencil icon, that is located in the bottom toolbar, on the right, near the command you used before (the number near it shows how many files you have changed): click it, enter a "commit message", then click on "Commit all". Now you have saved all your work in the trial "branch" of your project in Git.

If you want to come back to your initial copy of the project, click on "trial", then choose "master", and voila... your are now working on the old copy or your project. You can switch between the two branches anytime, only remember that, before switching, you have to "commit" your changes, that is, save them in Git, as I explained above.

At some point, you may want to bring the changes you made in trial to master. To do so, when you are working in master, click on master (always in the bottom toolbar, on the right), then choose "Manage branches", then right click on "trial", click on "Merge from...", then click the Merge button: you have now brought the changes made on trial into master. The only problem can arise if you have changed a file both in master and in trial, and the changes are conflicting: in this case, VS will warn you, show you the conflicting changes, and you will have to choose which version of the conflicting changes you want.

If one don't want or can't use git, one can also copy and paste the project folder. Once in the new folder, Here is what I usualy do (I assumed the old project is named " projectOld " and new one " projectNew "). :

  • rename projectOld.sln to projectNew.sln
  • open projectNew.sln and change the following line in order to set the new project name :
Project("{C9CE8BB8-8B4A-11D0-5E31-C9100A0BC942}") = "projectNew", "projectNew.vcxproj", "{66F6A241-22E1-4941-6DA3-B6D9E7A8AF86}"
  • rename projectOld.vcxproj to projectNew.vcxproj
  • open projectNew.vcxproj and change the lines with the <!-- here --> comments
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  [...]
  <PropertyGroup Label="Globals">
    [...]
    <RootNamespace>projectNew</RootNamespace>                 <!-- here -->
    [...]
    <ProjectName>projectNew</ProjectName>             <!-- here -->
  [...]
  <ItemGroup>     
    <ClCompile Include="..\..\..\..\..\IncludePath(1)\ImplementatFile(1).cpp" />  <!-- here -->
    [... up to last]
    <ClCompile Include="..\..\..\..\..\IncludePath(n)\ImplementatFile(n).cpp" />
    [...]
  <ItemGroup>
    [same thing for every ItemGroups]                 <!-- here -->
  [...]
  • rename projectOld.vcxproj.filters to projectNew.vcxproj.filters

  • rename projectOld.vcxproj.user to projectNew.vcxproj.user

  • one can delete the Debug and X64 folders, they will be created again by mvsc.

I suggest you go with Project Template inside Visual Studio. You create a project template, store it somewhere, then create a new project by using the stored template. Here are more details

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ms247121(v=vs.100)?redirectedfrom=MSDN

Yes, with GIT branching you can create variations of a project easily. But I think that was not the core of the question asked, because if you create a branch, it is kept separate.

I had a similar scenario where I needed a similar project in the same solution (code first database). A clone of the database project to start with and make some changes for a different database. So in the end I wanted to have 2 databases, not identical but similar, in the same solution.

Adding a new project in the solution and then copying the .CS-Files is possible but cumbersome because of the references and dependencies.

So what I did is:

  1. Close Visual Studio
  2. Open the file explorer and copy the entire folder (eg MyProjectA), rename the copy (eg to MyProjectB)
  3. Rename the .csproj project file of the copied project MyProjectB. Then open it with a text editor of your choice, to see if you need to adapt anything (for example, project references if you moved it to a different directory level; they usually refer to a different project with a relative path, eg <ProjectReference Include="..\\SomePathOfADifferentProject\\SomeProject.csproj"/> )
  4. Open Visual Studio, load the solution
  5. In the solution explorer, right click on the solution, select "Add existing project...". Now browse for MyProjectB to add it as existing project

and you're done!

If you're using source control like GIT, make sure to check if the clone was correctly added (ie check if the files are tracked by source control).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM