Stop polluting My Documents with Visual Studio folders
Visual Studio creates a new folder in My Documents with every version. Over time, if the user requires many different versions of Visual Studio installed, this pollutes the folder. My Documents is supposed to be where I keep, well, my documents.
This even goes again Microsoft's own software design guidelines, if I remember them right.
Most of the subfolders should be moved to the existing AppData Visual Studio folder. The Projects subfolder has no reason to exist, since you might as well default the My Documents folder when creating new projects (the user can obviouly change this at the time, it's just a default location, as with any other app.)
We’ve begun work on this and are considering changing the default location for new projects to C:\\USERPROFILE\Source\repos. Would this be a reasonable change to address the problem of “clutter” in the Documents folder? This is currently the default for cloned repositories, so all projects would be in a singular default location.
As well, you still retain the option to change the default if you’d like.
Program Manager – VS IDE
Hi guys, can You just provide some registry keys so I can change the idiotic behaviour of creating folders:
Visual Studio 2017/StartPages
Visual Studio 2017/ArchitectureExplorer
This is so idiotic and kills the integration of documents with OneDrive for business.
This only shows that VS devs are 20 years behind current MS
That location would seem good to me.
I'm trying to avoid it defaulting to redirected company network drives (v. slow)
We're migrating the company to OneDrive and using that for redirecting default folders. When re-directing there the c# folder name is illegal. so get it out of 'My Documents' get the IT Pro/Admin votes.
Brady Healey commented
So now we have C:\Users\<User>\Source\, which I don't like but oh well. I've changed it to my own projects folder so no harm. However we still have the junk project/item templates which should be in AppData really. Worst of all, visual studio still makes the stupid 'StartPages' folder and there's no option to change it. The folder doesn't even contain anything. Problem not fixed. You'd think MS of all companies would be respecting the purpose of various windows directories the most. Unreal.
What about work also on clean installation on only one drive. We have small SSDs, we're not millionaires. And It can be done, since I have two PGP mounted drives to circumvent this.
Søren Nguyen Boisen commented
To me the important changes are:
1) Split the content so projects go to one location and VS cruft like snippets go to another.
2) Allow user to override default location of project folder.
3) Use the same name regardless of VS version to avoid future cruft.
Brian Drennan commented
I vote for the default for new projects to be under %USERPROFILE%\Source or %USERPROFILE%\Source\Repos by default (but obviously to the user's default folder when set). For settings docs (non-projects, snippets), I like the idea of using the AppData folder. My Documents is the absolute worst when your organization decides to employ folder redirection with OneDrive... Sync errors for days! I wish IISExpress was easier to configure to change this as well (I just gave up).
IISExpress is another offender. I opened this suggestion yesterday.
Jan Kučera commented
Well in my documents, there are Visual Studio 10/11/14/15/2005/2008/2010/2012/2013/2015/2017 folders and I am happy with that.
I do keep my "serious" projects in a separate folder and source control backed-up projects on different drive, but the random and ad-hoc projects I keep in the document folders.(And my separate project folder has symlinks to the document folders too.)
If this is customizable at install time, the documents folder should probably be still default 1) as it is actually the recommended location for user's stuff AFAIK - definitely not AppData as has also been explained below 2) for backwards compatibility reasons.
But I agree with Patrick and TheLievense that the plurality of mostly empty folders in those VS directories is unnecessary.
Del Woodcock commented
C:\\USERPROFILE\Source\repos is still not good.
I put all my stuff in C:\SourceCode on my system. And besides TFS, I back it up to a network share every night.
What needs to happen is make it an option to locate the folders where ever you want before installation.
%USERPROFILE%\Source is still not the correct location, it's just more clutter!
Program base installation goes to Program Files
Per-program data goes to ProgramData
Per-user data goes to %USERPROFILE%/AppData
It's not hard, seriously. I uninstall any software that bloats the wrong directory. The worst part is that you guys can't even provide a simple option to move the start page folder, so it's still stuck in our documents.
This is critical - our documents folder is mapped to the network and results in Visual Studio running *horribly* slow.
Yes, C:\UserProfile\Source\Repos would be an improvement, but even better would be something off the root, i.e. C:\Code. This is what I always do. Inevitably, I am at the command line and don't want to deal with typing spaces. Rationale (1) We're talking about developers who understand the concept of folders and files, not people who need the security of "My Documents" library that masks the real folder. (2) Development tools are installed on the PC and source is in Git/TFS so less concern about backing up stuff out of the documents folder.
Fadi R commented
That's what VirtualBox is for my friend, keeps Visual Studio from turning your Work Station upside down because polluting your Documents is the least of it's offenses. It's also useful when you want to completely separate environments different editions so that they don't step on each other's toes or even just isolate different projects from each other. I've experienced no performance hits doing this.
TJ Horton commented
Allow a user to change the parent filler, don't fix it to any location. Also never assume c: drive.
Erik Ušaj commented
Hi Allison, hi Mark,
Make sure that setup has an option to define the global folder for VS projects.
Developer customers should be able to select appropriate global folder for their needs:
- default (as recomanded by Microsoft, best practices, GPOs, available space, etc.)
- custom (anything that makes sense to developer; for example external drive on systems with limited primary drive space / limited space on User folders)
On top of that setup should include steps to define personal and company version control system (git, svn, mercurial, ...) and project locations should be separated for company vs. personal projects. For example my current company requires all personal files are stored in a "\personal" folder on any drive. Company does not have rights to access that folder.
Setting up a meeting with Windows / Windows Server PMs responsable for Folder Recirection features and associated GPO settings might be also a good idea.
( see & read: https://technet.microsoft.com/en-us/library/cc732275(v=ws.11).aspx )
Discuss possible issued customer can face with poorly congigured GPOs, space limitations on a typical Office knowledge worker space allocation size, etc.
Michael Richardson commented
Allison, I have little opinion about the default because it will only matter to those who don't have their own system (mine is "c:\prj\[client]\[project]" and those people won't have much reason for an opinion. What I do care about is easily being able to select my own choice and it be anywhere I want (allow for junctions for example).
Patrick Westerhoff commented
I don’t think that the issue is generally with *project* files. I personally like to have my projects inside ~\Documents (although I put them into ~\Documents\Projects).
I think the issue is more with the other folders that are created, e.g. ArchitectureExplorer, Code Snippets, Settings, Templates, etc. Most of those folders are completely empty! Ignoring the Projects folders, I currently have 2 files and 44 folders spread inside the Visual Studio 2017 folder. That’s ridiculous and mostly unneeded: Those folders should only be created when there’s actually content placed within them.
And it’s even worse if you have multiple versions of Visual Studio installed. I used to have folders for three versions, all without much in them apart from the projects—which are additionally too spread for things that are not really version dependent after all.
So generally, project sources might be placed into ~\Documents\, ~\Source (if you insist, although I really dislike that place since the Windows HOME isn’t like a Unix HOME, so stuff there feels a bit wrong to me), or even ~\Documents\Visual Studio projects (to make up something completely new here, which would be version independent too).
And all those settings and configurations and presets should be stored in %APPDATA%, like sane Windows applications do. Ideally, you should provide a way to back up those settings from within Visual Studio, so you can carry them over to a different machine easily. But those don’t belong into a prominent document location.
That's not enough unless that location is also the location for the following folders which VS clutters My Documents with:
And the bigger issue is that none of those folders should be created (regardless of the default location) until the developer does something that needs to be saved to those folders. For a significant portion of developers those folders just sit empty.
All the developers I know store their development projects in they own "Projects" folder, each project in a subfolder withing that fodler, but never under My Documents. Therefore, my suggestion is that you ask the user where that "Projects" folder is, and store whatever you need in there, and NEVER EVER under My Documents. At the end, a development project is not a document. Your proposal of asking the user where to locate a folder the first time it is going to be used is fine too, but do not default to My Documents, because that will pollute the folder if the developer is lazy.
Lacy Moore commented
Almost 6 years later and still a problem. Even moreso since OneDrive for Business can't deal with C#. We'll all be dead and gone before either problem gets resolved.