Visual Studio Upgrade Wizard unexpectedly deletes junctions and symbolic links

Trips

Well-known member
Joined
Aug 7, 2010
Messages
2,788
I have a problem with the Visual Studio Upgrade Wizard (on both Visual Studio 2008 and Visual Studio 2010) as
<span style="text-decoration:underline I very commonly use junction points for linking to directories containing subprojects :
If the Upgrade Wizard finds a subproject in a subdirectory linked using a junction point or a symbolic link, it immediately
<span style="text-decoration:underline deletes the junction point or the symbolic link before even starting the upgrading.
This is very annoying because, as the Visual Studio 2010 project file format has completely changed from Visual Studio 2008, I expect to
<span style="text-decoration:underline recurrently use the Upgrade Wizard for synchronizing between Visual Studio 200x and Visual Studio 2010 project files that I need to maintain and modify concurrently.
Steps to reproduce:
<ol>
Open Visual Studio 2005 or 2008 (without any solution). Select "New" -> "Project". Choose Project Type, for example "Win32 project". Choose project name: "Upgrade_Wizard_Bug_Prj". Select a directory for creating the project/solution. Choose solution name: "Upgrade_Wizard_Bug_Sln". Make the option "Create directory for solution" CHECKED. Click "Ok", and "Terminate". Close the solution. Go inside the "Upgrade_Wizard_Bug_Sln" directory (using Windows Explorer).
Create a new directory inside it: for example "test". Move the whole directory "Upgrade_Wizard_Bug_Prj" (with contents) inside the "test" directory.
Copy the whole solution directory with files and subfolders on another computer with a more recent version of Visual Studio installed
(you can bypass this if you have a more recent version of Visual Studio installed on the same computer) .<br/>
<span style="text-decoration:underline Next we will work with the copy . Create a junction point (or alternatively a symbolic link on Windows Vista or Windows 7) from the new "Upgrade_Wizard_Bug_Prj" to the old location, in order to make it like if the original "Upgrade_Wizard_Bug_Prj" was still
there. This can be done using "linkd", "mklink", " http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx Junction " (from Mark Russinovitch Winternals) or " http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html Link
Shell Extension " (I use the latter). Now open Visual Studio 2008 or 2010 (anyone which is more recent than the previous one).
Open, with this newer Visual Studio, the "Upgrade_Wizard_Bug_Sln.sln" solution file created with the older Visual Studio Version.
</ol>
(note that actual VS menu and command names may be a little different because here I am translating back from French)
<br/>
As the solution and project files comes from an older version, you can note that <span style="text-decoration:underline
a wizard window opens for converting the project .<br/>
<br/>
At this point, <span style="text-decoration:underline even without proceeding with project conversion, you can verify that the junction point or symbolic link that you created before
<span style="text-decoration:underline HAS COMPLETELY DISAPPEARED. <br/>
Of course, if you try to complete the conversion, there will be an error because the project directory will not be found.
I checked this now on Windows Vista Home Premium SP2 and Windows 7 Ultimate x64, but I think it would happen on Windows XP Professional SP3 as well
(because I remember having had unexpected junction disappearing in Windows XP in the past that I now begin to understand better) .
So I would like to know:
Is there any compelling reason for the Upgrade Wizard to delete junction points or symbolic links that it find in its paths?
Is there a way for preventing the Visual Studio Upgrade Wizard from making this deletion?
As a workaround, is there a way to set permissions on junction points or symbolic links for denying rights to Visual Studio Upgrade Wizard from deleting them, while still leaving full access to the linked directory contents?
(I tried various methods for doing that but I failed in finding a working one. In that case, it is not evident to tell if permissions settings apply to the junction point or to the working directory, whereas in that case I very want to apply them to the
junction point!)

Best regards,
Gilles Reeves




View the full article
 
Back
Top