Presentation is loading. Please wait.

Presentation is loading. Please wait.

Migrating from the .NET Framework Version 1.1 to 2.0

Similar presentations


Presentation on theme: "Migrating from the .NET Framework Version 1.1 to 2.0"— Presentation transcript:

1 Migrating from the .NET Framework Version 1.1 to 2.0
Ken Casada Developer Evangelist Developer & Platform Evangelism Microsoft Switzerland

2 Agenda .NET Framework 3.0 Upgrade Options Breaking changes
Windows Client Applications ASP.NET Applications Resources 2

3 Microsoft .NET Framework
The Managed Code Programming Model for Windows

4 .NET Framework 2.0 + bunch of new DLLs
Take Away … .NET Framework 3.0 = .NET Framework bunch of new DLLs If you have already installed .NET 2.0, installing .NET 3.0 will not break existing application 4

5 Upgrade Options (1) Don’t upgrade
Should do cost/benefits analysis of upgrading to VS2005 and .NET Framework 2.0 Will features be added? Will app merely undergo bug fixes? Lifespan of application may factor into decision 5

6 Upgrade Options (2) Upgrade the Framework to 2.0 (3.0)
Allows you to develop new apps in 2.0 Maintain your old apps in 1.x (continue to use VS2003 as development environment) Run apps side by side Run in 2.0 backward compatibility mode (improved security, viewstate performance) 6

7 Loads with 2.0 unless the process is configured to run against 1.1 (*)
Which Version Is Used? Application type Computer with 1.1 Computer with 2.0 Computer with 1.1 and 2.0 1.1 stand-alone application (Web or Microsoft Windows client) Loads with 1.1 Loads with 2.0(*) 2.0 stand-alone application (Web or Microsoft Windows client) Fails Loads with 2.0 1.1 add-in to a native application (such as Office or Internet Explorer) Loads with 2.0 unless the process is configured to run against 1.1 (*) 2.0 add-in to a native application (such as Office or Internet Explorer) (*) There are some breaking changes in .NET Framework 2.0 7

8 Breaking changes Design-mode breaking changes
Do not impact applications compiled with 1.0 or 1.1 running against the .NET Framework 2.0 Changes in behavior (not necessarily breaking) Fewer than 10 actually impact an application Runtime-mode breaking changes API breaking changes (fewer than 5) Method behavior changes

9 Runtime breaking change sample
Short Description When very long paths are passed to Server.MapPath, they now fail with an InvalidOperationException instead of a PathTooLongException. Affected APIs System.Web.HttpServerUtility.MapPath Severity Low Compat Switch Available No Description An application that was passing an invalid long path to MapPath in version 1.1 would get a PathTooLongException bubbled up from the BCL. In version 2.0, there is a native code implementation for WebHost that fails the invalid path. The HostingEnvironment then throws an InvalidOperationException, which results in a 500 User Scenario An application that was passing an invalid long path to MapPath in version 1.1 would get a PathTooLongException bubbled up from the BCL. If the exception was unhandled, the response status code would be 414. In version 2.0, there is a different exception and the status code is 500. Work Around In either release, it's an error condition and any global exception handling mechanisms will be treated identically.

10 Design-Time breaking change sample
Protected constructors can no longer be called from their derived types Closes a potential security hole class B { protected B() {} } class D : B D() : base () {} // this still works static void Main() new B(); // this breaks!

11 Loads with 2.0 unless the process is configured to run against 1.1 (*)
Which Version Is Used? Application type Computer with 1.1 Computer with 2.0 Computer with 1.1 and 2.0 1.1 stand-alone application (Web or Microsoft Windows client) Loads with 1.1 Loads with 2.0(*) 2.0 stand-alone application (Web or Microsoft Windows client) Fails Loads with 2.0 1.1 add-in to a native application (such as Office or Internet Explorer) Loads with 2.0 unless the process is configured to run against 1.1 (*) 2.0 add-in to a native application (such as Office or Internet Explorer) (*) There are some breaking changes in .NET Framework 2.0 11

12 Load Specific Version (EXE)
Locate the unmanaged .EXE Create a text file called <unmanagedEXEname>.exe.config (Ex: myapp.exe  myapp.exe.config) Paste this text into the new text file: <?xml version=“1.0”> <configuration> <startup> <supportedRuntime version=“v ”/> </startup> </configuration> 12

13 Load Specific Version (ASP.NET)
Installing .NET Framework installs ASP.NET 2.0 By default, this will not change existing IIS Web Sites to 2.0, they will remain to 1.1/1.0 Web site runtime controlled by the new ASP.NET tab in IIS Admin (site properties) Important! DO NOT try to mix ASP.NET 1.1 and 2.0 apps within a single AppPool.  Create separate AppPools for each Version! 13

14 Web Application: - side by side deployments - 2
Web Application: - side by side deployments backward compatibility mode 14

15 Upgrade Options (3) Convert your Application to 2.0
Upgrade to VS2005 SP1 ! (VS2005 SP1 Update for Windows Vista available) Develop your application in Microsoft Visual Studio 2005  Use new .NET 2.0 feature ! 15

16 Convert your Application to 2.0
Back up your VS2003/1.1 solution first! Open VS2003 project/solution in VS2005 SP1 Conversion wizard convert project/solution to VS 2005 Compile the code 16

17 Convert Windows Client Applications
Trivial in most cases Open the solution in VS2005 Wizard does necessary touchups to project files If it doesn’t work at this point, check the breaking changes list Not a lot of issues out there with this scenario Best way to find out is to just try it Backup your files (don’t forget this, just in case!) See if it works as is

18 Convert ASP.NET Applications
Converting to VS2005 Web Applications (Option#1) Web Application Project template (included in VS2005 SP1) that mirrors the 1.1 file structure and use it Minimal changes to VS2003 code For complex web application, this may be the better choice Recommended choice Converting to VS2005 Websites (Option#2) Referred to as the web site template Web app defined by files in a folder (No project file needed) Dynamic Compilation / Multiple assemblies

19 Opt#1 Step 1: Validate in VS2003
If remote project connected via FPSE, move to in VS03 prior to upgrading Open using the solution file in VS03 Do a build solution command to validate all projects in the solution build Run and validate all pages function correctly 19

20 Opt#1 Step 2: Upgrade solution
Open SLN file in VS2005  Launches Conversion Wizard Make sure to make a backup Convertion Wizard updates solution file and projects files to VS2005 syntax After conversion build and fixup errors Name collisions with new types in framework  fully qualify names with namespace Warnings about using obsolete members Run application and validate functionality 20

21 Opt#1 Step 3: Convert To Partial Classes
Right click on root node of Web project and select “Convert to Web Application” Converts pages to using partial classes Moves generated designer code into designer.cs (or designer.vb) file Build and fixup errors Likely error, if any, will be because of a missing control declaration that was accidentally removed To fixup declare missing controls in code-behind file (not designer file) 21

22 Opt#1 Partial Classes Visual Studio 2003 Visual Studio 2005 P1.aspx
9/29/ :48 AM Partial Classes Visual Studio Visual Studio 2005 P1.aspx P2.aspx P1.aspx.cs P2.aspx.cs P2.aspx.designer.cs © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

23 Opt#1 Partial Classes Visual Studio 2003 Visual Studio 2005 P1.aspx
9/29/ :48 AM Partial Classes Visual Studio Visual Studio 2005 P1.aspx P2.aspx P1.aspx.cs P2.aspx.cs P2.aspx.designer.cs P1.aspx Inherits=“AppName.P1” Codebehind=“P1.aspx.cs” P1.aspx.cs namespace AppName { public class P1 : System.Web.UI.Page { // Contains both user & auto-generated code, e.g. protected System.Web.UI.WebControls.Label Label1; override protected void OnInit(EventArgs e) { … } } } © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

24 Opt#1 Partial Classes Visual Studio 2003 Visual Studio 2005 P1.aspx
9/29/ :48 AM Partial Classes Visual Studio Visual Studio 2005 P1.aspx P2.aspx P1.aspx.cs P2.aspx.cs P2.aspx.designer.cs P2.aspx Inherits=“P2” CodeBehind=“P2.aspx.cs” P2.aspx.cs namespace AppName { public partial class P2 : System.Web.UI.Page { // Contains user code } } P2.aspx.designer.cs namespace AppName { public partial class P2{ protected System.Web.UI.WebControls.Label Label1; override protected void OnInit(EventArgs e)} } © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

25 Opt#1 Step 3: Convert To Partial Classes
Right click on root node of Web project and select “Convert to Web Application” Converts pages to using partial classes Moves generated designer code into designer.cs (or designer.vb) file Build and fixup errors Likely error, if any, will be because of a missing control declaration that was accidentally removed To fixup declare missing controls in code-behind file (not designer file) 25

26 Opt#1 Step 4: Fixup XHTML errors
Conversion Wizard sets default validation in tool to Internet Explorer 6 VS2005 provides the ability to validate XHTML compliance errors Change validation in Tools Option to XHTML 1.1 Open individual pages and fixup XHTML issues. If XHTML compliance isn’t desired leave validation to Internet Explore 6 26

27 Converting to VS2005 Web Applications
Opt#1 Converting to VS2005 Web Applications 27

28 Convert ASP.NET Applications
Converting to VS2005 Web Applications (Option#1) Web Application Project template (included in VS2005 SP1) that mirrors the 1.1 file structure and use it Minimal changes to VS2003 code For complex web application, this may be the better choice Recommended choice Converting to VS2005 Websites (Option#2) Referred to as the web site template Web app defined by files in a folder (No project file needed) Dynamic Compilation / Multiple assemblies

29 Opt#2 Step 1: Validate in VS2003
Open Web Project in VS2003 using solution or project file Do a build solution command to validate all projects in the solution build Run project and test pages to validate all pages run correctly 29

30 Opt#2 Step 2: Prepare App. in VS2003
Review the web site architecture for possible VS05 conflicts including: Multiple project files referring to same set of files (common files ca be migrated twice)  Duplicate? Evtl. migrate to WAP Other projects referencing the web project  move shared code to a separate class library Excluded Files ignored by the Wizard (project will contain extra unconverted files that are now part of your project) 30

31 Opt#2 Step 3: Upgrade to VS2005
Open using “File > Open Website > Local IIS”  Launches Conversion Wizard Backup your project  Backup Folder outside Web application’s folder tree! If other non-web projects are in VS03 solution: Remove Web Projects from Solution Migration Solution and fixup compile errors Use “Add Existing Website” to add removed Web projects to solution, which will upgrade the web project to a website 31

32 Step 4: Post Conversion Fixup
Opt#2 Step 4: Post Conversion Fixup Review upgrade report and fixup compile issues reported on build Refactor code for reserved word naming conflicts Clean up: Remove exclude files if needed Remove orphaned resx files Remove member functions like OnInit and InitializeComponent() (if they don’t implement user specific code)

33 Step 4: Post Conversion Fixup
Opt#2 Step 4: Post Conversion Fixup …Because of new web site compilation model… Manual fix-up needed: Resource Manager sample CircularReference Code changes done by the conversion Wizard stand-alone class file references Access auto-generated control variable

34 Opt#2 Step 5: Fixup XHTML errors
Conversion Wizard sets default validation in tool to Internet Explorer 6 VS2005 provides the ability to validate XHTML compliance errors Change validation in Tools Option to XHTML 1.1 Open individual pages and fixup XHTML issues. If XHTML compliance isn’t desired leave validation to Internet Explore 6 34

35 Converting to VS2005 Websites
Opt#2 Converting to VS2005 Websites 35

36 ABC - stand-alone class file ref.
Opt#2 9/29/ :48 AM ABC - stand-alone class file ref. FILE ASP.NET 1.x Code Control1.ascx inherits=”Control1” Control1.ascx.cs class Control1 : System.Web.UI.UserControl { public static string myName = “Control1”; public void foo() { some code } } Class1.cs string myName = “Class1 + “ + Control1.myName; FILE ASP.NET 2.0 Code Control1.ascx inherits=”migrated_Control1” Control1.ascx.cs class migrated_Control1 : Control1 { override public void foo() { some code } } App_Code/ Class1.cs String myName = “Class1 + “ + Control1.myName; App_Code/ Control1_stub.cs abstract class Control1 : System.Web.UI.UserControl { public static string myName = “Control1”; abstract public void foo();} © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

37 Auto-generated control variable
Opt#2 9/29/ :48 AM Auto-generated control variable FILE ASP.NET 1.x Code Control1.ascx <asp:Label id=“Label1” runat=“server”>c1</asp:Label> Control1.ascx.cs public System.Web.UI.WebControls.Label Label1; Page1.aspx.cs Control1 c1=(Control1)LoadControl(“~/Control1.ascx”); C1.Label1.Text = “Foo”; FILE ASP.NET 2.0 Code Control1.ascx <asp:Label id=“p_Label1” runat=“server”>c1</asp:Label> Control1 hidden partial class //this will be auto-generated in the hidden, partial class protected System.Web.UI.WebControls.Label p_Label1; Control1.ascx.cs public System.Web.UI.WebControls.Label Label1{ get { return p_Label1;} set { p_Label1 = value;} } Page1.aspx.cs Control1 c1=(Control1)LoadControl(“~/Control1.ascx”); C1.Label1.Text = “Foo”; © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

38 Opt#2 Resource Manager FILE ASP.NET 1.x Code Control1.ascx.cs
9/29/ :48 AM Resource Manager FILE ASP.NET 1.x Code Control1.ascx.cs Assembly a = Assembly.Load(“myApp”); ResourceManager rm = new ResourceManager(“myApp.Resource1”, a); String s = rm.GetString(“foo”); Resource1.resx Contains name/value pair “foo = bar” FILE ASP.NET 2.0 Code Control1.ascx.cs String s = Resources.Resource1.foo; App_GlobalResources\ Resource1.resx Resource1.resx moved to App_GlobalResource Contains name/value pair “foo = bar” © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

39 Microsoft .NET Framework Ship Schedule
Q2 Q3 Q1 2007 Q4 3.0 RTM 3.5 RTM 3.5 B1 .NET Framework 3.5: Q4 2007 SP for .Net Framework 2.0 (bug fixing)

40 9/29/ :48 AM For More Information Converting to a Web Application Project (WAP) Converting to a Web Site Project (WSP) Common Web Project Conversion Issues and Solutions Step-By-Step Guide to Converting Web Projects from VS03 to VS05 Questions – Forums: Migrating from VS03 to VS05 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

41 Next Generation Business Solutions Platform Strategy Review
9/29/ :48 AM 41 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Download ppt "Migrating from the .NET Framework Version 1.1 to 2.0"

Similar presentations


Ads by Google