Skip to main content

Converting .Net 1.1 Applications to 2.0

This post outlines my approach and findings from converting several hundred .Net 1.1 projects (300+) from .Net 1.1 to .Net 2.0.

Approach
Retrieve all .Net 1.1 source code from source code control repository

At the root directory, use “DIR /C /B *.csproj >> projects.txt” at a command line to dump the full path of each C#.Net project into a file

Use the /upgrade option with devenv to convert the .Net projects to 2.0 (devenv "MyProject.sln" /upgrade)

  1. Open a new worksheet in Excel
  2. Type devenv in the A1 cell; copy it down into the next several hundred rows
  3. Open the projects.txt file, select all, and copy
  4. Placing the cursor in cell B1 in Excel, paste
  5. Type /upgrade in the C1 cell; copy it down into the next several hundred rows
  6. In the D1 cell, paste in the following formula =A1& " " & B1& " " & C1; copy it down into the next several hundred rows
  7. Select the D column and copy
  8. Create a new file called convert.bat
  9. convert.bat and paste the clipboard from Excel into the file and save
  10. From a VS.Net 2005 command line, execute the convert.bat file piping it to convert.log: convert.bat >> convert.log

This process will upgrade the projects to .Net 2.0, create a backup of the original files, and output an upgrade report in XML format (UpgradeLog.xml).

Using Windows Explorer or your favorite searching tool (RegEx, FindStr, etc.), find all the UpgradeLog.xml files possessing the string “

Resolve all upgrade / conversion issues. Likely, this will be a manual process. (i.e. open up the project and resolve issues)

Use MSBuild to compile the newly-converted .Net 2.0 projects

  1. In Excel, copy the column containing all project files (B)
  2. Open a second worksheet; paste into column B
  3. Type msbuild in the A1 cell; copy it down into the next several hundred rows
  4. In the C1 cell, paste in the following formula =A1& " " & B1; copy it down into the next several hundred rows
  5. Select the C column and copy
  6. Create a new file called compile.bat
  7. Open compile.bat and paste the clipboard from Excel into the file and save
  8. From a VS.Net 2005 command line, execute the compile.bat file piping it to compile.log: compile.bat >> compile.log

Resolve all compilation issues. Likely, this will be a manual process. (i.e. open up the project and resolve issues)

Issues Encountered
  • Broken references
  • System.Diagnostics.Assert no longer supported. Use System.Diagnostics.Trace.Assert()
  • Post Build Events e.g. GAC’ing using hard-coded gacutil.exe path (e.g. call "c:\program files\Microsoft Visual Studio .NET 2003\common7\tools\vsvars32.bat")
  • Broken pre/post-build event scripting
  • Enterprise Library hard-coded paths (e.g. C:\Program Files\Microsoft Enterprise Instrumentation\Bin\Microsoft.EnterpriseInstrumentation.dll)
  • C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Lib\' specified in 'LIB environment variable' -- 'The system cannot find the path specified. ' à Resolution: remove all vc98 references from LIB path, reboot
  • Use project properties dialog to set keyfile instead of within AssemblyInfo.cs ([assembly: AssemblyKeyFile(@"W:\ServiceFramework\_setup\key.snk")]) – could be scripted
  • Many events and methods unavailable in Enterprise Library 2.0
  • NUnit 2.0 implementation different / incompatible from 1.0 (Broken/missing test harness projects)
  • Missing framework references
  • Missing web.config files
  • 'System.Xml.Xsl.XslTransform' is obsolete: 'This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202'
  • Devenv /upgrade converts .Net 1.1 web applications to .Net 2.0 Web Site Projects instead of Web Application Projects. These projects must be individually converted from WSP to WAP.

Happy upgrading!

Comments

Nathan's AX Hat said…
Hi Jeff,

Thanks for your useful post. I believe you meant:


DIR /S /B *.csproj >> projects.txt


using the /S = "Displays files in specified directory and all subdirectories." You've shown the /C switch, "Display the thousand separator in file sizes."

Nathan
Jeff Hunsaker said…
How right you are! Thanks for the catch.

Popular posts from this blog

Get Your Team Foundation Server Hate On!

[Google ranking skyrockets... ;-)] I'm a big fan of TFS/VSTS. However, there are a good pocket of folks who take issue with the way TFS handles or implements a certain feature. Well this is your chance to vent! I'm planning a presentation around the "Top 10 TFS/VSTS Hates and How to Alleviate Them"...or something along those lines. But I need your help. Post a comment below detailing your dislike. If it's legitimate, I'll highlight it in the presentation and [hopefully] provide an alternative, resolution, or work-around. Thanks in advance! Update 7/19/2008: Version Control and Microsoft

Rollback a Ooops in TFS with TFPT Rollback

Rhut roe, Raggie. You just checked in a merge operation affecting 100's of files in TFS against the wrong branch. Ooops. Well, you can simply roll it back, right? Select the folder in Source Control Explorer and...hey, where's the Rollback? Rollback isn't supported in TFS natively. However, it is supported within the Power Tools leveraging the command-line TFPT.exe utility. It's fairly straightforward to revert back to a previous version--with one caveot. First, download and install the Team Foundation Power Tools 2008 on your workstation. Before proceeding, let's create a workspace dedicated to the rollback. To "true up" the workspace, the rollback operation will peform a Get Latest for every file in your current workspace. This can consume hours (and many GB) with a broad workspace mapping. To work around this, I create a temporary workspace targeted at just the area of source I need to roll back. So let's drill down on our scenario... I'm worki

Configuring a Development Sandbox for the Azure CTP

I'm getting up to speed on Azure and the other cloud SDKs and need to configure an environment for development, demos and learning. My experiences... First off, if you've read my blog, you know I haven't installed non-productivity software on my core OS for years . Further, I don't get the warm and fuzzies installing CTP software on my core OS. I also love the recoverability and start-over-from-a-checkpoint features of virtualization. Virtual PC (VPC) houses all my development, demo and learning sandbox instances. So, let's start off with a VPC instance. For this to work well, ideally, you need a good 4GB of memory. Further to the ideal, you're running x64 so as to have access to the full 4GB of memory. ACQUIRE AN AZURE SERVICES DEVELOPER KEY To develop against Azure and/or .Net Services and SQL Services, you need an invitation code. Oooh, very exclusive. Pretty people to the front of the line! You can start the process here . If you run into problems, che