When I click on a C++ project in Visual Studio, I get this menu:
And so I can quickly press Alt+F,F(Command ProjectandSolutionContextMenus.Project.OpenFolderinFileExplorer) to open the folder of the project.
I also found that I can open containing folder if I open the file in the Text Editor in Visual Studio:
I bound it to Alt+F,F as well. I set it to only be active in Text Editor, it's the File.OpenContainingFolder command.
But when I click on files inside the project in the Solution Explorer, there is no context menu:
I tried to make the File.OpenContainingFolder command global, but it still doesn't work in the Solution Explorer when I just click on a file once. If I double click it and open it in the text editor, it works.
And I can't find a command in the Keyboard section in options of Visual Studio to open containing folder of a file selected in the Solution Explorer.
Maybe someone knows how to do it?
You can create an external tool menu item, and then bind a shortcut to that item.
Go to Tools > External Tools.
Click Add.
In Title edit box type Show in Explorer.
In Command edit box type explorer.exe.
In Arguments edit box type /select, $(ItemPath). There is a space between a comma and a dollar sign.
Click OK.
Make note at the position of the new command in the list. It could be first, it could be fifth, or something else. Let's assume it's the fifth one.
Assign a shortcut to the command Tools.ExternalCommand5. Restrict the shortcut to Solution Explorer.
That's it.
In Visual Studio 2012 in Solution Explorer window have doubled file names (sorry for no screenshots - here is the link http://floomby.ru/s1/uaxC8K).
In the same time it's all right in File Explorer and in project file (http://floomby.ru/s1/WaxCv8).
It's really annoying thing and cant find the reason why is this happening. What can be done to prevent such behavior?
Still can't describe how to prevent, except it's just use the Visual Studio 2012 merge tool more accuratly. But here is the solution to get rid of duplicate entries in Solution window.
First remember somehow all name of duplicated files (PrtScr or smth else)
Unload the project (call context menu on project name, item "Unload Project")
Edit "ProjectName.xxproj" (call context menu on project name, item "Edit Project.xxproj")
Ctrl+F, paste the name of duplicated file, choose Find All. Look in Find Results window for absolutely identical entries of project files and remove one of them (https://docs.google.com/file/d/0B0NKNNSBiGejeV8wZ3g0WEYzcTA/edit?usp=sharing).
Save changes and Reload Project
Another way is that
Exclude duplicate files from project
Click on "Show all files" button on top of solution explorer
Click again on "Show all files" button on top of solution explorer (this time you should see only one excluded file)
Include file again
You can do this on folders too
Where can I execute and find out the value of $(ProjectDir)?
To find out what it is right now (rather than at build time, where it may be different depending on what is going on):
right click on your project in the Solution Explorer, select Properties
select the Build Events tab
click the Edit pre-build or Edit post-build button, either is fine
in the window that pops up, click the Macros button
scroll down the list till you find ProjectDir, in the next pane is its actual value
Do a pre/post build step.
Example:
echo $(ProjectDir)
The answer from slugster did not work for me (most possible my fault).
In Visual Studio 2008
right click on your project in the Solution Explorer, select Properties
Go to Configuration Properties and then to Debugging
Click on the arrow in the Command Field and click the Edit Button
In Edit clik "Macros>>" You will see there the values of ProjectDir... etc..
In Visual Studio 2015, you can find ProjectDir by clicking on Macros in additional Include Directories and then clicking on Macros (for me there was nothing in Build Events) :
Open the project properties (Alter+Enter) and then go to "Build Events", select any of the build events, then select "Command Line", click "Edit", then press the "Macros >>" button.
Same here in Visual Studio 2019, you can find ProjectDir by clicking on Macros in additional Include Directories and then clicking on Macros (for me there was nothing in Build Events), like the answer in above Visual Studio 2015.
For me it was the path to the directory containing *.vcxproj file.
From https://learn.microsoft.com/en-us/cpp/build/reference/common-macros-for-build-commands-and-properties:
The directory of the project (defined as drive + path); includes the
trailing backslash ''.
Tools -> External Tools
create command for Powershell.exe or Csc.exe
copy exe to c:\ for shorter paths
Name it and check Prompt for arguments
now click Tools -> Click name of your tool
with dialog displayed, click Argument button and choose $(ProjectDir) or whatever.
Your $(ProjectDir) is displayed in Command Line after Powershell.exe or csc.exe
Clear Arguments and click argument button again
Your next selection is display again after command (repeat to view all 16 environment variables.
this is without executing command but command is required to save.
if you use csc.exe from this path
"C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\Roslyn\csc.exe"
copy Roslyn folder to
C:\Roslyn
csc.exe needs other files to work, you need whole directory.
Roslyn folder is only 34 Mb
I want to know where the solution/project is stored on my hard drive.
I would have thought right clicking on the project from within Visual Studio would have the information on where it is stored on my hard drive, but it doesn't.
Click on the project itself in the solution explorer and in the properties window it lists the project folder.
Only works if you've actually saved the project though. I.e. newly created projects don't have a location.
Start up Visual Studio and go to Tools->Options.
In the dialog box that opens, make sure to check the box that displays "Show All Settings."
From there, you should find a setting called "Projects and Solutions" which will have the list of default locations for projects, templates, etc.
When you have loaded you project in Visual Studio select the solution in the Solution explorer window and then select Properties window. You will see "Path" in the Properties window which points to the actual file.
Open one of the files in your Solution and hover over the tab in the code window. The full path will show up in a tooltip.
You can also go to Window | Windows... which shows you full path to all open files.
One way is to select the project in the solution explorer and then click File / Save As or press F4 and view the 'Project Folder' property.
I have a free standing set of files not affiliated with any C# project at all that reside in a complicated nested directory structure.
I want to add them in that format to a different directory in an ASP.NET web application I am working on; while retaining the same structure. So, I copied the folder into the target location of my project and I tried to “add existing item” only to lose the previous folder hierarchy.
Usually I have re-created the directories by hand, copied across on a one-to-one basis, and then added existing items. There are simply too many directories/items in this case.
So how do you add existing directories and files in Visual Studio 2008?
Drag the files / folders from Windows Explorer into the Solution Explorer. It will add them all. Note this doesn't work if Visual Studio is in Administrator Mode, because Windows Explorer is a User Mode process.
Enable "Show All Files" for the specific project (you might need to hit "Refresh" to see them)**.
The folders/files that are not part of your project appear slightly "lighter" in the project tree.
Right click the folders/files you want to add and click "Include In Project". It will recursively add folders/files to the project.
** These buttons are located on the mini Solution Explorer toolbar.
** Make sure you are NOT in debug mode.
In Solution Explorer:
Click Show All Files (second icon from the left at the top of Solution Explorer).
Locate the folder you want to add.
Right-click and select "Include in Project"
I use this to install add-ons like HTML editors and third-party file browsers.
I just want to point out that two of the solutions offered previously,
Drag and drop from Windows Explorer
Show All Files and then include in project.
do not do what the question asked for:
Include in project while preserving the directory structure.
At least not in my case (C++/CLI project Visual Studio 2013 on Windows 7).
In Visual Studio, once you are back in the normal view (not Show All Files), the files you added are all listed at the top level of the project.
Yes, on disk they still reside where they were, but in Solution Explorer they are loose.
I did not find a way around it except recreating the directory structure in Solution Explorer and then doing Add Existing Items at the right location.
I didn't immediately understand this based upon these descriptions but here is what I finally stumbled on:
Turn on "Show All Files" - there is an icon on the Solution Explorer toolbar
Using Windows Explorer (not solution explorer), move your files into the directory structure where you want them to reside
Click "Refresh" also on the Solution Explorer toolbar
The files that you've moved should be visible "ghosted" in the Solution Explorer tree structure where you've placed them
Right click on your ghosted files or folders and click "Include in Project". All the contents of a folder will be included
Below is the icon for the 'Show All Files', just for easy reference.
Click above in the red circle. Your folder will appear in Solution Explorer.
Right click on your folder -> Include in project.
You can change your project XML to add existing subfolders and structures automatically into your project like "node_modules" from NPM:
This is for older MSBuild / Visual Studio versions
<ItemGroup>
<Item Include="$([System.IO.Directory]::GetFiles("$(MSBuildProjectDirectory)\node_modules","*",SearchOption.AllDirectories))"></Item>
</ItemGroup>
For the current MSBuild / Visual Studio versions:
Just put it in the nodes of the xml:
<Project>
</Project>
In this case just change $(MSBuildProjectDirectory)\node_modules to your folder name.
You need to put your directory structure in your project directory. And then click "Show All Files" icon in the top of Solution Explorer toolbox. After that, the added directory will be shown up. You will then need to select this directory, right click, and choose "Include in Project."
This is what I do:
Right click on solution -> Add -> Existing Website...
Choose the folder where your website is. Just the root folder of the site.
Then everything will be added on your solution from folders to files, and files inside those folders.
At last, Visual Studio 2017 allows the user to import an entire directory with a single click. Visual Studio 2017 has a new functionality "Open Folder" that allows opening the entire folder, even without the need to save it as solution. The source code can be imported using the following methods.
Menu File → Open → *Folder (Ctrl + Shift + O)
devenv.exe <source folder>
It even supports building and debugging CMake projects.
Bring your C++ codebase to Visual Studio with “Open Folder”
There is now an open-source extension in the Marketplace that seems to do what the OP was asking for:
Folder To Solution Folder
If it doesn't do exactly what you want, the code is available, so you can modify it to suit your scenario.
HTH
A neat trick I discovered is that if you go to "Add existing...", you can drag the folder from the open dialog to your solution.
I have my Visual Studio to open in Admin Mode automatically, so this was a good workaround for me as I didn't want to have to undo that just to get this to work.
What worked for me was to drag the folder into Visual Studio, then right click the folder and select "Open Folder in File Explorer". Then select all and drag them into the folder in Visual Studio.
In Windows 7 you could do the following:
Right click on your project and select "Add->Existing Item". In the dialog which appears, browse to the root of the directory you want to add. In the upper right corner you have a search box. Type *.cs or *.cpp, whatever the type of files you want to add. After the search finishes, select all files, click Add and wait for a while...
The cleanest way that I've found to do this is to create a new Class Library project in the target folder, and redirect all of its build output elsewhere. It still leaves a .csproj file sitting in that folder, but it does let you see it in Visual Studio and pick which files to include in your project.
It has been a while since this was originally posted, but here is an alternative answer.
If you only care to be able to look at the physical files from inside visual studio and do not necessarily require to see them in the solution explorer default view, then click on the switch view button and choose the folder view and any physical directory/directories that are under your solution root folder will appear here even if they do not appear in the solution explorer default view.
If however, you want to add a folder tree that isn't too large as a virtual solution directory/directories to match your existing tree structure, do that and and then "add the existing" physical files to the virtual directory/directories. If the physical directory exists in your solution directory it will not copy the files - it will link directly to the physical files but they will appear as part of the solution virtual directories.
It's annoying that Visual Studio doesn't support this natively, but CMake could generate the Visual Studio project as a work around.
Other than that, just use Qt Creator. It can then export a Visual Studio project.