Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Visual Studio move project to a different folder

People also ask

How do I rename a project folder in Visual Studio 2019?

Right-click on the project name & click reload the project. Then rename the project name as highlighted below & save. It will automatically rename the .


I tried the suggestion to remove and re-add the project, but then fixing up dependencies can be a pain.

I use this approach:

  1. Move the project folder.
    • If the project is in source control, do the move using source control commands.
  2. Edit the solution file in a text editor. There should be only one path that you need to change.

Remove the project from your solution by right-clicking it in the Solution Explorer window and choosing Remove. Move the entire project folder, including subdirectories wherever you want it to go. Add the project back to your solution.

Namespace names is something completely different, just edit the source code.


  1. Close your solution in VS2012
  2. Move your project to the new location
  3. Open your solution
  4. Select the project that failed to load
  5. In the Properties tool window, there an editable “File path” entry that allows you to select the new project location
  6. Set the new path
  7. Right click on the project and click reload

Summary: rename-and-move in VS2019 with git, retaining git history, leveraging R# a bit, automatic dependent project reference updating (important for sln's with many projects, we have >200)

I have been using the following steps to rename-and-move C# projects in Visual Studio 2019. This process uses R# to adjust namespaces. The git history is retained by doing a "git mv" (avoiding add/delete history drop).

Two phases: 1) rename the project in place and 2) move the project.

(Uses tip from base2 re unloading projects.)

Rename

  1. VS | Solution Explorer | right-click project | Rename (e.g., Utils.Foo to Foo).
  2. VS | Solution Explorer | right-click project | Properties | change assembly name, default namespace and Assembly Information fields
  3. Do 1 and 2 for corresponding test project (e.g., Utils.Foo.Tests)
  4. VS | Solution Explorer | right-click projects (production and test) | Refactor | Adjust Namespaces
  5. XAML files that use the project may need to be updated (manually or with an appropriate global search and replace)
  6. Rebuild All
  7. Commit!! (to commit changes before moves)

Note: The folder in Windows Explorer remains the old name to this point (e.g., Utils.Foo). This is fixed in the move steps.

Move

This method: 1) retains git history, 2) leverages R# to adjust namespaces atomically and 3) updates dependent projects en masse (avoids tedious manual editing of dependent sln and csproj files).

  1. unload all the projects in the solution (so that removal of the target project does not trigger changes in dependent projects)

    VS | select all solution folders under the Solution | right-click Unload Projects

  2. move folders using git (so history is maintained)

a) open Developer Command Prompt for 2019

b) git status (to illustrate “nothing to commit, working tree clean”)

c) git mv the project e.g., git mv "C:\Code\foo\foo\Utils.Foo" "C:\Code\Foo"

d) git status to view/verify change

  1. remove the project

VS | Solution Explorer | select project | right-click | Remove (since all projects are unloaded, this will correctly NOT remove the references to it in dependent projects)

  1. re-add the project (to the new location in the tree in Solution Explorer)

a) VS | Solution Explorer | select target parent folder | right-click | Add | Existing Project

  1. reload all projects

IMPORTANT: Confirm that *.csproj files for dependent projects have been updated.

(VS | Team Explorer | Changes | double-click any dependent csproj listed | inspect-verify ProjectReference path change)

  1. Manually fix paths in the single moved *.csproj file

Use Notepad++ (or other text editor) to fix the paths. Often this can be done with a simple search-and-replace (e.g., ../../../../ to ../../).

This will update...

a) GlobalAssmeblyInfo.cs references

b) paths to packages

c) paths to Dependency Validation diagram files

d) paths to ruleset paths (e.g., <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Close and re-Open the solution (to get the project references into good shape)

Save All, Close Solution, I prefer to delete bin and obj folders to be clean of history, Re-open Solution

  1. Validate

a) VS | Team Explorer | Changes

i) should see Staged Changes that reveal the files that moved ii) should see dependent projects (*.csproj) that were nicely updated review the csproj diffs and notice that the paths have been beautifully updated!! (this is the magic that avoids laboriously manually updating the csproj files using a text editor)

b) in Windows Explorer, verify old location is empty

c) Clean Solution, Rebuild Solution, Run unit tests, Launch apps in sln.

  1. Commit!!

I had the same problem. I solved with move the references and in less than 15 minutes, without change the references.

For me the solution was simple:

  1. Move your files where you need.
  2. Delete the folder with name .vs. Must be as not visible folder.
  3. Open the solution file (.sln) using a simple editor like note or notepad++.
  4. Change the reference where your file is, using the following structure: if you put your project in the same folder remove the previous folder or the reference "..\"; if you put in a above folder add the reference "..\" or the name of the folder.
  5. Save the file with the changes.
  6. Open the project file (.csproj) and do the same, remove or add the reference.
  7. Save the changes.
  8. Open the solution file.

Examples:

In solution file (.sln)

  • Original: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", "ScannerPDF\PATH1.UI\PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.DataService", "ScannerPDF\PATH1.DataService\PATH1.DataService.csproj", "{ED5A561B-3674-4613-ADE5-B13661146E2E}"

    New: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI\PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.DataService", "PATH1.DataService\PATH1.DataService.csproj", "{ED5A561B-3674-4613-ADE5-B13661146E2E}"

In project file:

  • Original:

    New:

    Original reference: ....\lib\RCWF\2018.1.220.40\TelerikCommon.dll

    New reference: ..\lib\RCWF\2018.1.220.40\TelerikCommon.dll


What worked for me was to:

  1. Remove the project from the solution.
  2. Edit the project file with a text editor.
  3. Update all relative paths to the "packages". In my case I had to change ..\packages to ..\..\..\packages since I moved the project to a deeper folder.
  4. Load the project back into the solution.

in visual studio comunity 2019, i did what Victor David Francisco Enrique says, but needed only to delete the .vs invisbile folder