diff --git a/557.html b/557.html
new file mode 100644
index 0000000..285cd90
--- /dev/null
+++ b/557.html
@@ -0,0 +1,19 @@
+Part One Debugging in the VB .NET World
+Chapter 1: Strategic Debugging Issues
+Chapter 2: Language Surprises in VB .NET
+Part Two The Debugging Tools
+Chapter 3: The Visual Studio .NET Debugger
+Chapter 4: Using the Visual Studio .NET Debugger
+Chapter 5: Other Debugging Tools
+Chapter 6: Tracing and Instrumentation
+Part Three Debugging Applications
+Chapter 7: Windows Forms Debugging
+Chapter 8: Web Services Debugging
+Chapter 9: ASP.NET Debugging
+Chapter 10: Windows Services Debugging
+Chapter 11: VB.Classic Debugging
+Chapter 12: SQL Server Debugging
+Part Four Debugging Common Scenarios
+Chapter 13: Error Handling and Exception Management
+Chapter 14: Debugging Multithreaded Applications
+Chapter 15: Debugging Distributed Systems
\ No newline at end of file
diff --git a/919.pdf b/919.pdf
new file mode 100644
index 0000000..bb9faf6
Binary files /dev/null and b/919.pdf differ
diff --git a/920.pdf b/920.pdf
new file mode 100644
index 0000000..f4298d7
Binary files /dev/null and b/920.pdf differ
diff --git a/9781590590508.jpg b/9781590590508.jpg
new file mode 100644
index 0000000..df80a96
Binary files /dev/null and b/9781590590508.jpg differ
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/AspNetDebugDemo.vbproj b/Inetpub/wwwroot/AspNetDebugDemo/AspNetDebugDemo.vbproj
new file mode 100644
index 0000000..ce4ab0f
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/AspNetDebugDemo.vbproj
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/AspNetDebugDemo.vbproj.webinfo b/Inetpub/wwwroot/AspNetDebugDemo/AspNetDebugDemo.vbproj.webinfo
new file mode 100644
index 0000000..645711c
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/AspNetDebugDemo.vbproj.webinfo
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/AssemblyInfo.vb b/Inetpub/wwwroot/AspNetDebugDemo/AssemblyInfo.vb
new file mode 100644
index 0000000..e9e06d0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/AssemblyInfo.vb
@@ -0,0 +1,32 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx b/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx
new file mode 100644
index 0000000..1c53086
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx
@@ -0,0 +1,17 @@
+<%@ Page Language="vb" AutoEventWireup="false" Codebehind="CustomErrorPage.aspx.vb" Inherits="AspNetDebugDemo.CustomErrorPage"%>
+
+
+
+ CustomErrorPage
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx.resx
new file mode 100644
index 0000000..cb94e8a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx.resx
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx.vb
new file mode 100644
index 0000000..346af60
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/CustomErrorPage.aspx.vb
@@ -0,0 +1,33 @@
+Public Class CustomErrorPage
+ Inherits System.Web.UI.Page
+
+#Region " Web Form Designer Generated Code "
+
+ 'This call is required by the Web Form Designer.
+ Private Sub InitializeComponent()
+
+ End Sub
+ Protected WithEvents lblText As System.Web.UI.WebControls.Label
+ Protected WithEvents btnBack As System.Web.UI.WebControls.Button
+
+ 'NOTE: The following placeholder declaration is required by the Web Form Designer.
+ 'Do not delete or move it.
+ Private designerPlaceholderDeclaration As System.Object
+
+ Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
+ 'CODEGEN: This method call is required by the Web Form Designer
+ 'Do not modify it using the code editor.
+ InitializeComponent()
+ End Sub
+
+#End Region
+
+ Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
+ 'Put user code to initialize the page here
+ End Sub
+
+ Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
+ Server.ClearError()
+ Response.Redirect(Request.QueryString("aspxErrorPath"))
+ End Sub
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx b/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx
new file mode 100644
index 0000000..3845a82
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx
@@ -0,0 +1,18 @@
+<%@ Page Language="vb" AutoEventWireup="false" Codebehind="DefaultErrorPage.aspx.vb" Inherits="AspNetDebugDemo.DefaultErrorPage"%>
+
+
+
+ DefaultErrorPage
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx.resx
new file mode 100644
index 0000000..cb94e8a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx.resx
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx.vb
new file mode 100644
index 0000000..be4fdd1
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/DefaultErrorPage.aspx.vb
@@ -0,0 +1,33 @@
+Public Class DefaultErrorPage
+ Inherits System.Web.UI.Page
+
+#Region " Web Form Designer Generated Code "
+
+ 'This call is required by the Web Form Designer.
+ Private Sub InitializeComponent()
+
+ End Sub
+ Protected WithEvents btnBack As System.Web.UI.WebControls.Button
+ Protected WithEvents lblText As System.Web.UI.WebControls.Label
+
+ 'NOTE: The following placeholder declaration is required by the Web Form Designer.
+ 'Do not delete or move it.
+ Private designerPlaceholderDeclaration As System.Object
+
+ Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
+ 'CODEGEN: This method call is required by the Web Form Designer
+ 'Do not modify it using the code editor.
+ InitializeComponent()
+ End Sub
+
+#End Region
+
+ Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
+ 'Put user code to initialize the page here
+ End Sub
+
+ Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
+ Server.ClearError()
+ Response.Redirect(Request.QueryString("aspxErrorPath"))
+ End Sub
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/Global.asax b/Inetpub/wwwroot/AspNetDebugDemo/Global.asax
new file mode 100644
index 0000000..b94fec6
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/Global.asax
@@ -0,0 +1 @@
+<%@ Application Codebehind="Global.asax.vb" Inherits="AspNetDebugDemo.Global" %>
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/Global.asax.resx b/Inetpub/wwwroot/AspNetDebugDemo/Global.asax.resx
new file mode 100644
index 0000000..3f337e0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/Global.asax.resx
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.0.0.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/Global.asax.vb b/Inetpub/wwwroot/AspNetDebugDemo/Global.asax.vb
new file mode 100644
index 0000000..26c73b8
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/Global.asax.vb
@@ -0,0 +1,60 @@
+Imports System.Web
+Imports System.Web.SessionState
+
+Public Class Global
+ Inherits System.Web.HttpApplication
+
+#Region " Component Designer Generated Code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Component Designer.
+ InitializeComponent()
+
+ 'Add any initialization after the InitializeComponent() call
+
+ End Sub
+
+ 'Required by the Component Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Component Designer
+ 'It can be modified using the Component Designer.
+ 'Do not modify it using the code editor.
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container()
+ End Sub
+
+#End Region
+
+ Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application is started
+ End Sub
+
+ Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session is started
+ End Sub
+
+ Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires at the beginning of each request
+ End Sub
+
+ Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires upon attempting to authenticate the use
+ End Sub
+
+ Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when an error occurs
+ Context.Trace.Write(Server.GetLastError.InnerException.Message)
+ End Sub
+
+ Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session ends
+ End Sub
+
+ Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application ends
+ End Sub
+
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx b/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx
new file mode 100644
index 0000000..1c9b7b0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx
@@ -0,0 +1,50 @@
+<%@ Page Language="vb" AutoEventWireup="false" Codebehind="MainForm.aspx.vb" Inherits="AspNetDebugDemo.MainForm" trace="False" traceMode="SortByTime"%>
+
+
+
+ MainForm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx.resx
new file mode 100644
index 0000000..cb94e8a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx.resx
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx.vb
new file mode 100644
index 0000000..70ebe73
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/MainForm.aspx.vb
@@ -0,0 +1,94 @@
+Public Class MainForm : Inherits System.Web.UI.Page
+
+#Region " Web Form Designer Generated Code "
+
+ 'This call is required by the Web Form Designer.
+ Private Sub InitializeComponent()
+
+ End Sub
+ Protected WithEvents lblMain As System.Web.UI.WebControls.Label
+ Protected WithEvents lblException As System.Web.UI.WebControls.Label
+ Protected WithEvents btnPageLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnNoLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnAppLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnProcLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnPageTracingOn As System.Web.UI.WebControls.Button
+ Protected WithEvents btnAppTracingShow As System.Web.UI.WebControls.Button
+ Protected WithEvents lblTrace As System.Web.UI.WebControls.Label
+
+ 'NOTE: The following placeholder declaration is required by the Web Form Designer.
+ 'Do not delete or move it.
+ Private designerPlaceholderDeclaration As System.Object
+
+ Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
+ 'CODEGEN: This method call is required by the Web Form Designer
+ 'Do not modify it using the code editor.
+ InitializeComponent()
+ End Sub
+
+#End Region
+
+ Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
+ 'Put user code to initialize the page here
+ End Sub
+
+ Private Sub btnNoLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNoLevel.Click
+ 'Doesn't catch error.
+ 'Doesn't deal with error.
+ 'Displays error using ASP.NET default error page.
+ 'NB Ensure page-level and app-level error handling
+ 'switched-off before testing this procedure.
+ Dim Test As Object
+ Test.ToString()
+ End Sub
+
+ Private Sub btnProcLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcLevel.Click
+ 'Catches error at procedure-level
+ 'Deals with error in Catch clause
+ 'Displays error using Catch clause
+ Try
+ Dim Test As Object
+ Test.ToString()
+ Catch ex As Exception
+ Me.lblException.Text = ex.Message
+ Finally
+ Server.ClearError()
+ End Try
+ End Sub
+
+ Private Sub btnPageLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPageLevel.Click
+ 'Catches error at page-level
+ 'Deals with error in Me.Page_Error event
+ 'Displays error using Me.ErrorPage property
+ Me.ErrorPage = "CustomErrorPage.aspx"
+ Dim Test As Object
+ Test.ToString()
+ End Sub
+
+ Private Sub btnAppLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAppLevel.Click
+ 'Catches error at application-level
+ 'Deals with error in Global.asax.Application_Error event
+ 'Displays error using default redirect in Web.config
+ Dim Test As Object
+ Test.ToString()
+ End Sub
+
+ Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error
+ Trace.Write(Server.GetLastError.Message)
+ 'Server.ClearError()
+ End Sub
+
+ Private Sub btnPageTracingOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPageTracingOn.Click
+ With Me.Trace
+ .IsEnabled = True
+ .TraceMode = TraceMode.SortByTime
+ .Write("Information", "This is some custom trace information")
+ .Warn("Warning", "This is a custom trace warning")
+ End With
+ End Sub
+
+ Private Sub btnAppTracingShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAppTracingShow.Click
+ Response.Redirect("trace.axd")
+ End Sub
+
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/Styles.css b/Inetpub/wwwroot/AspNetDebugDemo/Styles.css
new file mode 100644
index 0000000..8fe2cd9
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/Styles.css
@@ -0,0 +1,163 @@
+/* Default CSS Stylesheet for a new Web Application project */
+
+BODY
+{
+ BACKGROUND-COLOR: white;
+ FONT-FAMILY: Verdana, Helvetica, sans-serif;
+ FONT-SIZE: .8em;
+ FONT-WEIGHT: normal;
+ LETTER-SPACING: normal;
+ TEXT-TRANSFORM: none;
+ WORD-SPACING: normal
+}
+
+H1, H2, H3, H4, H5, TH, THEAD, TFOOT
+{
+ COLOR: #003366;
+}
+H1 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 2em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H2 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1.75em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H3 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1.58em;
+ font-weight: 500;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H4 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1.33em;
+ font-weight: 500;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H5, DT {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H6 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: .8em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+TFOOT, THEAD {
+ font-size: 1em;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ font-family: Arial, Helvetica, sans-serif;
+ }
+
+TH {
+ vertical-align: baseline;
+ font-size: 1em;
+ font-weight: bold;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ font-family: Arial, Helvetica, sans-serif;
+ }
+
+
+A:link {
+ text-decoration: none;
+ color: #3333cc;
+ }
+
+A:visited {
+ text-decoration: none;
+ color: #333399;
+ }
+
+A:active {
+ text-decoration: none;
+ color: #333399;
+ }
+
+A:hover {
+ text-decoration: underline;
+ color: #3333cc;
+ }
+
+SMALL {
+ font-size: .7em;
+ }
+
+BIG {
+ font-size: 1.17em;
+ }
+
+BLOCKQUOTE, PRE {
+ font-family: Courier New, monospace;
+ }
+
+
+UL LI {
+ list-style-type: square ;
+ }
+
+UL LI LI {
+ list-style-type: disc;
+ }
+
+UL LI LI LI {
+ list-style-type: circle;
+ }
+
+OL LI {
+ list-style-type: decimal;
+ }
+
+OL OL LI {
+ list-style-type: lower-alpha;
+ }
+
+OL OL OL LI {
+ list-style-type: lower-roman;
+ }
+
+IMG {
+ margin-top: 5px;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/Web.config b/Inetpub/wwwroot/AspNetDebugDemo/Web.config
new file mode 100644
index 0000000..301ff1c
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/Web.config
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/access.cnf b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/access.cnf
new file mode 100644
index 0000000..7759afe
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/access.cnf
@@ -0,0 +1,4 @@
+vti_encoding:SR|utf8-nl
+RealmName:CHEETAH
+InheritPermissions:true
+PasswordDir:c:\\inetpub\\wwwroot\\_vti_pvt
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/deptodoc.btr b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/deptodoc.btr
new file mode 100644
index 0000000..10a761c
Binary files /dev/null and b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/deptodoc.btr differ
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/doctodep.btr b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/doctodep.btr
new file mode 100644
index 0000000..4b85379
Binary files /dev/null and b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/doctodep.btr differ
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/service.cnf b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/service.cnf
new file mode 100644
index 0000000..4e26c17
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/service.cnf
@@ -0,0 +1,20 @@
+vti_encoding:SR|utf8-nl
+vti_casesensitiveurls:IX|0
+vti_httpdversion:SX|Microsoft-IIS/5.0
+vti_textextensions:SX|.txt.actproj.asm.c.cc.cod.cpp.cs.cxx.dbs.def.dsp.dsw.etp.ext.fky.h.hpp.hxx.i.idl.inc.inl.kci.lgn.lst.mak.map.mk.odh.odl.prc.rc.rc2.rct.rgs.rul.s.sql.srf.tab.tlh.tli.trg.txt.udf.udt.user.usr.vap.vb.vcproj.viw.vspscc.vsscc.vssscc.
+vti_featurelist:VX|vti_ACIPAddresses vti_ACCreateNewUsers vti_ACChangePassword vti_ACNoUserGroup vti_ACCreateNewGroups vti_ACModifyGroups vti_ServiceMarkUrlDirExec vti_ServerEmailTransport
+vti_dependenciesood:IR|0
+vti_webservertype:SR|msiis
+vti_publishmetainfokeys:VR|vti_assignedto vti_approvallevel vti_categories vti_description
+vti_categories:VR|Travel Expense\\ Report Business Competition Goals/Objectives Ideas Miscellaneous Waiting VIP In\\ Process Planning Schedule
+vti_htmlextensions:SX|.htm.html.htx.stm.stm.html.htm.shtml.shtm.htt.asp.alx.asa.
+vti_approvallevels:VR|Content\\ Review Legal\\ Review Code\\ Review Manager\\ Review
+vti_timecreated:TR|01 Mar 2003 13:49:55 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_longfilenames:IX|1
+vti_welcomenames:VX|Default.htm Default.asp iisstart.asp Default.aspx
+vti_insecureserverurl:SR|http://localhost
+vti_secureserverurl:SR|https://localhost
+vti_disableautoimgsizeexts:SX|.asp
+vti_oldestcompatibleversion:SR|2.0.0.0
+vti_restartmanual:IX|0
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/service.lck b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/service.lck
new file mode 100644
index 0000000..e69de29
diff --git a/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/services.cnf b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/services.cnf
new file mode 100644
index 0000000..b498fd4
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo/_vti_pvt/services.cnf
@@ -0,0 +1 @@
+/
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/AspNetDebugDemo.vbproj b/Inetpub/wwwroot/AspNetDebugDemo_2002/AspNetDebugDemo.vbproj
new file mode 100644
index 0000000..69032e0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/AspNetDebugDemo.vbproj
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/AspNetDebugDemo.vbproj.webinfo b/Inetpub/wwwroot/AspNetDebugDemo_2002/AspNetDebugDemo.vbproj.webinfo
new file mode 100644
index 0000000..7b2a46a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/AspNetDebugDemo.vbproj.webinfo
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/AssemblyInfo.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/AssemblyInfo.vb
new file mode 100644
index 0000000..e9e06d0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/AssemblyInfo.vb
@@ -0,0 +1,32 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx b/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx
new file mode 100644
index 0000000..1c53086
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx
@@ -0,0 +1,17 @@
+<%@ Page Language="vb" AutoEventWireup="false" Codebehind="CustomErrorPage.aspx.vb" Inherits="AspNetDebugDemo.CustomErrorPage"%>
+
+
+
+ CustomErrorPage
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx.resx
new file mode 100644
index 0000000..cb94e8a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx.resx
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx.vb
new file mode 100644
index 0000000..346af60
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/CustomErrorPage.aspx.vb
@@ -0,0 +1,33 @@
+Public Class CustomErrorPage
+ Inherits System.Web.UI.Page
+
+#Region " Web Form Designer Generated Code "
+
+ 'This call is required by the Web Form Designer.
+ Private Sub InitializeComponent()
+
+ End Sub
+ Protected WithEvents lblText As System.Web.UI.WebControls.Label
+ Protected WithEvents btnBack As System.Web.UI.WebControls.Button
+
+ 'NOTE: The following placeholder declaration is required by the Web Form Designer.
+ 'Do not delete or move it.
+ Private designerPlaceholderDeclaration As System.Object
+
+ Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
+ 'CODEGEN: This method call is required by the Web Form Designer
+ 'Do not modify it using the code editor.
+ InitializeComponent()
+ End Sub
+
+#End Region
+
+ Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
+ 'Put user code to initialize the page here
+ End Sub
+
+ Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
+ Server.ClearError()
+ Response.Redirect(Request.QueryString("aspxErrorPath"))
+ End Sub
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx b/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx
new file mode 100644
index 0000000..3845a82
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx
@@ -0,0 +1,18 @@
+<%@ Page Language="vb" AutoEventWireup="false" Codebehind="DefaultErrorPage.aspx.vb" Inherits="AspNetDebugDemo.DefaultErrorPage"%>
+
+
+
+ DefaultErrorPage
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx.resx
new file mode 100644
index 0000000..cb94e8a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx.resx
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx.vb
new file mode 100644
index 0000000..be4fdd1
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/DefaultErrorPage.aspx.vb
@@ -0,0 +1,33 @@
+Public Class DefaultErrorPage
+ Inherits System.Web.UI.Page
+
+#Region " Web Form Designer Generated Code "
+
+ 'This call is required by the Web Form Designer.
+ Private Sub InitializeComponent()
+
+ End Sub
+ Protected WithEvents btnBack As System.Web.UI.WebControls.Button
+ Protected WithEvents lblText As System.Web.UI.WebControls.Label
+
+ 'NOTE: The following placeholder declaration is required by the Web Form Designer.
+ 'Do not delete or move it.
+ Private designerPlaceholderDeclaration As System.Object
+
+ Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
+ 'CODEGEN: This method call is required by the Web Form Designer
+ 'Do not modify it using the code editor.
+ InitializeComponent()
+ End Sub
+
+#End Region
+
+ Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
+ 'Put user code to initialize the page here
+ End Sub
+
+ Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
+ Server.ClearError()
+ Response.Redirect(Request.QueryString("aspxErrorPath"))
+ End Sub
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax b/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax
new file mode 100644
index 0000000..b94fec6
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax
@@ -0,0 +1 @@
+<%@ Application Codebehind="Global.asax.vb" Inherits="AspNetDebugDemo.Global" %>
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax.resx
new file mode 100644
index 0000000..3f337e0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax.resx
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.0.0.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax.vb
new file mode 100644
index 0000000..26c73b8
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/Global.asax.vb
@@ -0,0 +1,60 @@
+Imports System.Web
+Imports System.Web.SessionState
+
+Public Class Global
+ Inherits System.Web.HttpApplication
+
+#Region " Component Designer Generated Code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Component Designer.
+ InitializeComponent()
+
+ 'Add any initialization after the InitializeComponent() call
+
+ End Sub
+
+ 'Required by the Component Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Component Designer
+ 'It can be modified using the Component Designer.
+ 'Do not modify it using the code editor.
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container()
+ End Sub
+
+#End Region
+
+ Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application is started
+ End Sub
+
+ Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session is started
+ End Sub
+
+ Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires at the beginning of each request
+ End Sub
+
+ Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires upon attempting to authenticate the use
+ End Sub
+
+ Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when an error occurs
+ Context.Trace.Write(Server.GetLastError.InnerException.Message)
+ End Sub
+
+ Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session ends
+ End Sub
+
+ Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application ends
+ End Sub
+
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx b/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx
new file mode 100644
index 0000000..1c9b7b0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx
@@ -0,0 +1,50 @@
+<%@ Page Language="vb" AutoEventWireup="false" Codebehind="MainForm.aspx.vb" Inherits="AspNetDebugDemo.MainForm" trace="False" traceMode="SortByTime"%>
+
+
+
+ MainForm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx.resx
new file mode 100644
index 0000000..cb94e8a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx.resx
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx.vb
new file mode 100644
index 0000000..70ebe73
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/MainForm.aspx.vb
@@ -0,0 +1,94 @@
+Public Class MainForm : Inherits System.Web.UI.Page
+
+#Region " Web Form Designer Generated Code "
+
+ 'This call is required by the Web Form Designer.
+ Private Sub InitializeComponent()
+
+ End Sub
+ Protected WithEvents lblMain As System.Web.UI.WebControls.Label
+ Protected WithEvents lblException As System.Web.UI.WebControls.Label
+ Protected WithEvents btnPageLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnNoLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnAppLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnProcLevel As System.Web.UI.WebControls.Button
+ Protected WithEvents btnPageTracingOn As System.Web.UI.WebControls.Button
+ Protected WithEvents btnAppTracingShow As System.Web.UI.WebControls.Button
+ Protected WithEvents lblTrace As System.Web.UI.WebControls.Label
+
+ 'NOTE: The following placeholder declaration is required by the Web Form Designer.
+ 'Do not delete or move it.
+ Private designerPlaceholderDeclaration As System.Object
+
+ Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
+ 'CODEGEN: This method call is required by the Web Form Designer
+ 'Do not modify it using the code editor.
+ InitializeComponent()
+ End Sub
+
+#End Region
+
+ Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
+ 'Put user code to initialize the page here
+ End Sub
+
+ Private Sub btnNoLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNoLevel.Click
+ 'Doesn't catch error.
+ 'Doesn't deal with error.
+ 'Displays error using ASP.NET default error page.
+ 'NB Ensure page-level and app-level error handling
+ 'switched-off before testing this procedure.
+ Dim Test As Object
+ Test.ToString()
+ End Sub
+
+ Private Sub btnProcLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcLevel.Click
+ 'Catches error at procedure-level
+ 'Deals with error in Catch clause
+ 'Displays error using Catch clause
+ Try
+ Dim Test As Object
+ Test.ToString()
+ Catch ex As Exception
+ Me.lblException.Text = ex.Message
+ Finally
+ Server.ClearError()
+ End Try
+ End Sub
+
+ Private Sub btnPageLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPageLevel.Click
+ 'Catches error at page-level
+ 'Deals with error in Me.Page_Error event
+ 'Displays error using Me.ErrorPage property
+ Me.ErrorPage = "CustomErrorPage.aspx"
+ Dim Test As Object
+ Test.ToString()
+ End Sub
+
+ Private Sub btnAppLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAppLevel.Click
+ 'Catches error at application-level
+ 'Deals with error in Global.asax.Application_Error event
+ 'Displays error using default redirect in Web.config
+ Dim Test As Object
+ Test.ToString()
+ End Sub
+
+ Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error
+ Trace.Write(Server.GetLastError.Message)
+ 'Server.ClearError()
+ End Sub
+
+ Private Sub btnPageTracingOn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPageTracingOn.Click
+ With Me.Trace
+ .IsEnabled = True
+ .TraceMode = TraceMode.SortByTime
+ .Write("Information", "This is some custom trace information")
+ .Warn("Warning", "This is a custom trace warning")
+ End With
+ End Sub
+
+ Private Sub btnAppTracingShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAppTracingShow.Click
+ Response.Redirect("trace.axd")
+ End Sub
+
+End Class
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/Styles.css b/Inetpub/wwwroot/AspNetDebugDemo_2002/Styles.css
new file mode 100644
index 0000000..8fe2cd9
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/Styles.css
@@ -0,0 +1,163 @@
+/* Default CSS Stylesheet for a new Web Application project */
+
+BODY
+{
+ BACKGROUND-COLOR: white;
+ FONT-FAMILY: Verdana, Helvetica, sans-serif;
+ FONT-SIZE: .8em;
+ FONT-WEIGHT: normal;
+ LETTER-SPACING: normal;
+ TEXT-TRANSFORM: none;
+ WORD-SPACING: normal
+}
+
+H1, H2, H3, H4, H5, TH, THEAD, TFOOT
+{
+ COLOR: #003366;
+}
+H1 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 2em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H2 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1.75em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H3 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1.58em;
+ font-weight: 500;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H4 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1.33em;
+ font-weight: 500;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H5, DT {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+H6 {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: .8em;
+ font-weight: 700;
+ font-style: normal;
+ text-decoration: none;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ }
+
+TFOOT, THEAD {
+ font-size: 1em;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ font-family: Arial, Helvetica, sans-serif;
+ }
+
+TH {
+ vertical-align: baseline;
+ font-size: 1em;
+ font-weight: bold;
+ word-spacing: normal;
+ letter-spacing: normal;
+ text-transform: none;
+ font-family: Arial, Helvetica, sans-serif;
+ }
+
+
+A:link {
+ text-decoration: none;
+ color: #3333cc;
+ }
+
+A:visited {
+ text-decoration: none;
+ color: #333399;
+ }
+
+A:active {
+ text-decoration: none;
+ color: #333399;
+ }
+
+A:hover {
+ text-decoration: underline;
+ color: #3333cc;
+ }
+
+SMALL {
+ font-size: .7em;
+ }
+
+BIG {
+ font-size: 1.17em;
+ }
+
+BLOCKQUOTE, PRE {
+ font-family: Courier New, monospace;
+ }
+
+
+UL LI {
+ list-style-type: square ;
+ }
+
+UL LI LI {
+ list-style-type: disc;
+ }
+
+UL LI LI LI {
+ list-style-type: circle;
+ }
+
+OL LI {
+ list-style-type: decimal;
+ }
+
+OL OL LI {
+ list-style-type: lower-alpha;
+ }
+
+OL OL OL LI {
+ list-style-type: lower-roman;
+ }
+
+IMG {
+ margin-top: 5px;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/Web.config b/Inetpub/wwwroot/AspNetDebugDemo_2002/Web.config
new file mode 100644
index 0000000..301ff1c
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/Web.config
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AspNetDebugDemo.vbproj b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AspNetDebugDemo.vbproj
new file mode 100644
index 0000000..3254769
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AspNetDebugDemo.vbproj
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|30 Apr 2003 18:43:04 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|30 Apr 2003 18:43:04 -0000
+vti_filesize:IR|6643
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AspNetDebugDemo.vbproj.webinfo b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AspNetDebugDemo.vbproj.webinfo
new file mode 100644
index 0000000..96d6de4
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AspNetDebugDemo.vbproj.webinfo
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|30 Apr 2003 18:44:54 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|30 Apr 2003 18:44:54 -0000
+vti_filesize:IR|133
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AssemblyInfo.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AssemblyInfo.vb
new file mode 100644
index 0000000..bd11e4c
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/AssemblyInfo.vb
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|01 Mar 2003 13:50:04 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|01 Mar 2003 13:50:04 -0000
+vti_filesize:IR|1044
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx
new file mode 100644
index 0000000..2b0fb67
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|02 Mar 2003 16:45:40 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|02 Mar 2003 16:45:40 -0000
+vti_filesize:IR|1050
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx.resx
new file mode 100644
index 0000000..a3f799d
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx.resx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|02 Mar 2003 16:45:41 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|02 Mar 2003 16:45:41 -0000
+vti_filesize:IR|5318
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx.vb
new file mode 100644
index 0000000..958e85d
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/CustomErrorPage.aspx.vb
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|02 Mar 2003 16:45:41 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|02 Mar 2003 16:45:41 -0000
+vti_filesize:IR|1284
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx
new file mode 100644
index 0000000..b86c3d6
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|02 Mar 2003 16:45:41 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|02 Mar 2003 16:45:41 -0000
+vti_filesize:IR|1049
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx.resx
new file mode 100644
index 0000000..a3f799d
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx.resx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|02 Mar 2003 16:45:41 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|02 Mar 2003 16:45:41 -0000
+vti_filesize:IR|5318
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx.vb
new file mode 100644
index 0000000..feb4ea0
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/DefaultErrorPage.aspx.vb
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|02 Mar 2003 16:45:41 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|02 Mar 2003 16:45:41 -0000
+vti_filesize:IR|1285
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax
new file mode 100644
index 0000000..f1fa572
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|01 Mar 2003 13:50:02 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|01 Mar 2003 13:50:02 -0000
+vti_filesize:IR|80
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax.resx
new file mode 100644
index 0000000..be4798a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax.resx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|30 Jan 2002 05:05:12 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|30 Jan 2002 05:05:12 -0000
+vti_filesize:IR|1733
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax.vb
new file mode 100644
index 0000000..34f5236
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Global.asax.vb
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|03 Mar 2003 12:53:58 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|03 Mar 2003 12:53:58 -0000
+vti_filesize:IR|1873
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx
new file mode 100644
index 0000000..9bd2ce6
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|06 Mar 2003 02:21:22 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|06 Mar 2003 02:21:22 -0000
+vti_filesize:IR|2523
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx.resx b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx.resx
new file mode 100644
index 0000000..b47580e
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx.resx
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|06 Mar 2003 02:21:22 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|06 Mar 2003 02:21:22 -0000
+vti_filesize:IR|5318
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx.vb b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx.vb
new file mode 100644
index 0000000..608ad67
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/MainForm.aspx.vb
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|06 Mar 2003 02:21:22 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|06 Mar 2003 02:21:22 -0000
+vti_filesize:IR|4032
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Styles.css b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Styles.css
new file mode 100644
index 0000000..2e4709a
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Styles.css
@@ -0,0 +1,8 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|01 Mar 2003 13:50:04 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|01 Mar 2003 13:50:04 -0000
+vti_filesize:IR|2855
+vti_cachedlinkinfo:VX|
+vti_cachedsvcrellinks:VX|
+vti_backlinkinfo:VX|
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Web.config b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Web.config
new file mode 100644
index 0000000..85d89b1
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_cnf/Web.config
@@ -0,0 +1,5 @@
+vti_encoding:SR|utf8-nl
+vti_timelastmodified:TR|05 Mar 2003 00:13:21 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_cacheddtm:TX|05 Mar 2003 00:13:21 -0000
+vti_filesize:IR|4248
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/access.cnf b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/access.cnf
new file mode 100644
index 0000000..7759afe
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/access.cnf
@@ -0,0 +1,4 @@
+vti_encoding:SR|utf8-nl
+RealmName:CHEETAH
+InheritPermissions:true
+PasswordDir:c:\\inetpub\\wwwroot\\_vti_pvt
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/deptodoc.btr b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/deptodoc.btr
new file mode 100644
index 0000000..ea2724c
Binary files /dev/null and b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/deptodoc.btr differ
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/doctodep.btr b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/doctodep.btr
new file mode 100644
index 0000000..4b25c26
Binary files /dev/null and b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/doctodep.btr differ
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/linkinfo.cnf b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/linkinfo.cnf
new file mode 100644
index 0000000..a48f168
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/linkinfo.cnf
@@ -0,0 +1 @@
+vti_encoding:SR|utf8-nl
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/service.cnf b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/service.cnf
new file mode 100644
index 0000000..227ea97
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/service.cnf
@@ -0,0 +1,24 @@
+vti_encoding:SR|utf8-nl
+vti_casesensitiveurls:IX|0
+vti_httpdversion:SX|Microsoft-IIS/5.0
+vti_textextensions:SX|.txt.actproj.asm.c.cc.cod.cpp.cs.cxx.dbs.def.dsp.dsw.etp.ext.fky.h.hpp.hxx.i.idl.inc.inl.kci.lgn.lst.mak.map.mk.odh.odl.prc.rc.rc2.rct.rgs.rul.s.sql.srf.tab.tlh.tli.trg.txt.udf.udt.user.usr.vap.vb.vcproj.viw.vspscc.vsscc.vssscc.
+vti_featurelist:VX|vti_ACIPAddresses vti_ACCreateNewUsers vti_ACChangePassword vti_ACNoUserGroup vti_ACCreateNewGroups vti_ACModifyGroups vti_ServerEmailTransport
+vti_dependenciesood:IR|0
+vti_webservertype:SR|msiis
+vti_categories:VR|Travel Expense\\ Report Business Competition Goals/Objectives Ideas Miscellaneous Waiting VIP In\\ Process Planning Schedule
+vti_textindexood:IR|0
+vti_htmlextensions:SX|.htm.html.htx.stm.stm.html.htm.shtml.shtm.htt.asp.alx.asa.
+vti_approvallevels:VR|Content\\ Review Legal\\ Review Code\\ Review Manager\\ Review
+vti_timecreated:TR|01 Mar 2003 13:49:55 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_longfilenames:IX|1
+vti_welcomenames:VX|Default.htm Default.asp iisstart.asp Default.aspx
+vti_insecureserverurl:SR|http://CHEETAH
+vti_secureserverurl:SR|https://CHEETAH
+vti_disableautoimgsizeexts:SX|.asp
+vti_oldestcompatibleversion:SR|2.0.0.0
+vti_restartmanual:IX|0
+vti_defaultcharset:SR|windows-1252
+vti_publishmetainfokeys:VR|vti_assignedto vti_approvallevel vti_categories vti_description
+vti_hassearchbot:BR|false
+vti_autorecalc:IX|1
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/service.lck b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/service.lck
new file mode 100644
index 0000000..e69de29
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/services.cnf b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/services.cnf
new file mode 100644
index 0000000..b498fd4
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/services.cnf
@@ -0,0 +1 @@
+/
diff --git a/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/writeto.cnf b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/writeto.cnf
new file mode 100644
index 0000000..a48f168
--- /dev/null
+++ b/Inetpub/wwwroot/AspNetDebugDemo_2002/_vti_pvt/writeto.cnf
@@ -0,0 +1 @@
+vti_encoding:SR|utf8-nl
diff --git a/Inetpub/wwwroot/TimeServer/AssemblyInfo.vb b/Inetpub/wwwroot/TimeServer/AssemblyInfo.vb
new file mode 100644
index 0000000..a14f4f2
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/AssemblyInfo.vb
@@ -0,0 +1,32 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Inetpub/wwwroot/TimeServer/Global.asax b/Inetpub/wwwroot/TimeServer/Global.asax
new file mode 100644
index 0000000..ce277a3
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/Global.asax
@@ -0,0 +1 @@
+<%@ Application Codebehind="Global.asax.vb" Inherits="TimeServer.Global" %>
\ No newline at end of file
diff --git a/Inetpub/wwwroot/TimeServer/Global.asax.resx b/Inetpub/wwwroot/TimeServer/Global.asax.resx
new file mode 100644
index 0000000..3f337e0
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/Global.asax.resx
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.0.0.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
diff --git a/Inetpub/wwwroot/TimeServer/Global.asax.vb b/Inetpub/wwwroot/TimeServer/Global.asax.vb
new file mode 100644
index 0000000..25e6587
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/Global.asax.vb
@@ -0,0 +1,59 @@
+Imports System.Web
+Imports System.Web.SessionState
+
+Public Class Global
+ Inherits System.Web.HttpApplication
+
+#Region " Component Designer Generated Code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Component Designer.
+ InitializeComponent()
+
+ 'Add any initialization after the InitializeComponent() call
+
+ End Sub
+
+ 'Required by the Component Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Component Designer
+ 'It can be modified using the Component Designer.
+ 'Do not modify it using the code editor.
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container()
+ End Sub
+
+#End Region
+
+ Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application is started
+ End Sub
+
+ Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session is started
+ End Sub
+
+ Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires at the beginning of each request
+ End Sub
+
+ Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires upon attempting to authenticate the use
+ End Sub
+
+ Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when an error occurs
+ End Sub
+
+ Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session ends
+ End Sub
+
+ Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application ends
+ End Sub
+
+End Class
diff --git a/Inetpub/wwwroot/TimeServer/SoapMonitor.vb b/Inetpub/wwwroot/TimeServer/SoapMonitor.vb
new file mode 100644
index 0000000..d2072be
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/SoapMonitor.vb
@@ -0,0 +1,115 @@
+Option Strict On
+Imports System.Web.Services.Protocols
+Imports System.IO
+
+Public Class SoapMonitor : Inherits SoapExtension
+
+ Private OldStream As Stream
+ Private NewStream As Stream
+
+ Public Overloads Overrides Function GetInitializer(ByVal serviceType As System.Type) As Object
+ End Function
+
+ Public Overloads Overrides Function GetInitializer(ByVal methodInfo As System.Web.Services.Protocols.LogicalMethodInfo, ByVal attribute As System.Web.Services.Protocols.SoapExtensionAttribute) As Object
+ End Function
+
+ Public Overrides Sub Initialize(ByVal initializer As Object)
+ End Sub
+
+ Public Overrides Sub ProcessMessage(ByVal Message As System.Web.Services.Protocols.SoapMessage)
+ 'Called after incoming or outgoing data
+ 'has been serialized into SOAP message
+ Dim Logfile As New FileStream("C:\test\test.log", FileMode.Append, FileAccess.Write)
+ Dim LogfileWriter As New StreamWriter(Logfile)
+
+ Select Case Message.Stage
+
+ Case SoapMessageStage.BeforeDeserialize
+ 'Write header details
+ With LogfileWriter
+ .WriteLine("******************************************************")
+ .WriteLine("Web service: " & Message.Url)
+ .WriteLine("Web method: " & Message.Action)
+ .WriteLine("Called at " & DateTime.Now)
+ .WriteLine("Message stage: SOAP REQUEST (" & Message.Stage.ToString & ")")
+ .WriteLine()
+ .Flush()
+ End With
+ 'Write incoming SOAP request message
+ CopyStream(OldStream, NewStream)
+ NewStream.Position = 0
+ CopyStream(NewStream, Logfile)
+ NewStream.Position = 0
+ 'Blank separating line
+ LogfileWriter.WriteLine()
+
+ Case SoapMessageStage.AfterSerialize
+ 'Write header details
+ With LogfileWriter
+ .WriteLine("******************************************************")
+ .WriteLine("Web service: " & Message.Url)
+ .WriteLine("Web method: " & Message.Action)
+ .WriteLine("Called at " & DateTime.Now)
+ .WriteLine("Message stage: SOAP RESPONSE (" & Message.Stage.ToString & ")")
+ .Write("Exception thrown? ")
+ If Message.Exception Is Nothing Then
+ .WriteLine("No")
+ Else
+ .WriteLine("Yes")
+ End If
+ .WriteLine()
+ .Flush()
+ End With
+ 'Write outgoing SOAP response message
+ NewStream.Position = 0
+ CopyStream(NewStream, Logfile)
+ NewStream.Position = 0
+ CopyStream(NewStream, OldStream)
+ 'Blank separating line
+ LogfileWriter.WriteLine()
+
+ End Select
+
+ Logfile.Flush()
+ Logfile.Close()
+
+ End Sub
+
+ Public Overrides Function ChainStream(ByVal stream As System.IO.Stream) As System.IO.Stream
+
+ OldStream = stream
+ NewStream = New MemoryStream
+ Return NewStream
+
+ End Function
+
+ Private Sub CopyStream(ByVal FromStream As Stream, ByVal ToStream As Stream)
+ Dim FromReader As TextReader = New StreamReader(FromStream)
+ Dim ToWriter As TextWriter = New StreamWriter(ToStream)
+
+ ToWriter.WriteLine(FromReader.ReadToEnd)
+ ToWriter.Flush()
+
+ End Sub
+
+End Class
+
+Public Class SoapMonitorAttribute : Inherits SoapExtensionAttribute
+ 'Add this custom attribute to any web method where you want
+ 'to monitor the SOAP request and response messages
+
+ Public Overrides ReadOnly Property ExtensionType() As System.Type
+ Get
+ Return GetType(SoapMonitor)
+ End Get
+ End Property
+
+ Public Overrides Property Priority() As Integer
+ Get
+ Return 0
+ End Get
+ Set(ByVal Value As Integer)
+ End Set
+ End Property
+
+End Class
\ No newline at end of file
diff --git a/Inetpub/wwwroot/TimeServer/TimeServer.vbproj b/Inetpub/wwwroot/TimeServer/TimeServer.vbproj
new file mode 100644
index 0000000..f683c18
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/TimeServer.vbproj
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/TimeServer/TimeServer.vbproj.webinfo b/Inetpub/wwwroot/TimeServer/TimeServer.vbproj.webinfo
new file mode 100644
index 0000000..166ec16
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/TimeServer.vbproj.webinfo
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Inetpub/wwwroot/TimeServer/TimeService.asmx b/Inetpub/wwwroot/TimeServer/TimeService.asmx
new file mode 100644
index 0000000..52307dc
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/TimeService.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="vb" Codebehind="TimeService.asmx.vb" Class="TimeServer.TimeService" %>
diff --git a/Inetpub/wwwroot/TimeServer/TimeService.asmx.resx b/Inetpub/wwwroot/TimeServer/TimeService.asmx.resx
new file mode 100644
index 0000000..3f337e0
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/TimeService.asmx.resx
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.0.0.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
diff --git a/Inetpub/wwwroot/TimeServer/TimeService.asmx.vb b/Inetpub/wwwroot/TimeServer/TimeService.asmx.vb
new file mode 100644
index 0000000..5d4ff9a
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/TimeService.asmx.vb
@@ -0,0 +1,125 @@
+Option Strict On
+
+Imports System.Xml
+Imports System.Web.Services
+Imports System.Web.Services.Protocols
+
+
+ _
+Public Class TimeService : Inherits System.Web.Services.WebService
+
+#Region " Web Services Designer Generated Code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Web Services Designer.
+ InitializeComponent()
+
+ 'Add your own initialization code after the InitializeComponent() call
+
+ End Sub
+
+ 'Required by the Web Services Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Web Services Designer
+ 'It can be modified using the Web Services Designer.
+ 'Do not modify it using the code editor.
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container
+ End Sub
+
+ Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
+ 'CODEGEN: This procedure is required by the Web Services Designer
+ 'Do not modify it using the code editor.
+ If disposing Then
+ If Not (components Is Nothing) Then
+ components.Dispose()
+ End If
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+#End Region
+
+ _
+ Public Function CurrentTime() As String
+ Return System.DateTime.Now.ToLongTimeString
+ End Function
+
+ _
+ Public Sub ThrowExceptionRaw()
+ 'This method throws a raw exception
+ Dim Test As Object
+ Test.ToString()
+
+ End Sub
+
+ _
+ Public Sub ThrowExceptionCustom()
+ 'This method throws a customized exception
+ Try
+ Dim Test As Object
+ Test.ToString()
+ Catch Exc As Exception
+ Throw CustomException(Exc)
+ End Try
+
+ End Sub
+
+ Private Function CustomException(ByVal Exc As Exception) As SoapException
+ Dim doc As New System.Xml.XmlDocument
+
+ 'Create detail node
+ Dim DetailNode As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ SoapException.DetailElementName.Name, _
+ SoapException.DetailElementName.Namespace)
+
+ 'Add original exception type
+ Dim ExcType As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ "ExceptionType", _
+ SoapException.DetailElementName.Namespace)
+ If Context.Request.UserHostAddress = "127.0.0.1" Then
+ ExcType.InnerText = Exc.GetType.ToString
+ Else
+ ExcType.InnerText = "SoapException"
+ End If
+
+ 'Add original exception message
+ Dim ExcMessage As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ "ExceptionMessage", _
+ SoapException.DetailElementName.Namespace)
+ If Context.Request.UserHostAddress = "127.0.0.1" Then
+ ExcMessage.InnerText = Exc.Message
+ Else
+ ExcMessage.InnerText = "Error - no details available"
+ End If
+
+ 'Add original exception stack trace
+ Dim ExcStackTrace As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ "ExceptionTrace", _
+ SoapException.DetailElementName.Namespace)
+ If Context.Request.UserHostAddress = "127.0.0.1" Then
+ ExcStackTrace.InnerText = Exc.StackTrace
+ Else
+ ExcStackTrace.InnerText = "No stack trace available"
+ End If
+
+ 'Append the extra details to main detail node
+ DetailNode.AppendChild(ExcType)
+ DetailNode.AppendChild(ExcMessage)
+ DetailNode.AppendChild(ExcStackTrace)
+
+ 'Return new custom SoapException
+ Return New SoapException("", SoapException.ServerFaultCode, _
+ Context.Request.Url.AbsoluteUri, DetailNode)
+
+ End Function
+
+End Class
+
diff --git a/Inetpub/wwwroot/TimeServer/Web.config b/Inetpub/wwwroot/TimeServer/Web.config
new file mode 100644
index 0000000..f68fc1c
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/Web.config
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/TimeServer/_vti_pvt/access.cnf b/Inetpub/wwwroot/TimeServer/_vti_pvt/access.cnf
new file mode 100644
index 0000000..7759afe
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/_vti_pvt/access.cnf
@@ -0,0 +1,4 @@
+vti_encoding:SR|utf8-nl
+RealmName:CHEETAH
+InheritPermissions:true
+PasswordDir:c:\\inetpub\\wwwroot\\_vti_pvt
diff --git a/Inetpub/wwwroot/TimeServer/_vti_pvt/deptodoc.btr b/Inetpub/wwwroot/TimeServer/_vti_pvt/deptodoc.btr
new file mode 100644
index 0000000..f157fe6
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer/_vti_pvt/deptodoc.btr differ
diff --git a/Inetpub/wwwroot/TimeServer/_vti_pvt/doctodep.btr b/Inetpub/wwwroot/TimeServer/_vti_pvt/doctodep.btr
new file mode 100644
index 0000000..4b85379
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer/_vti_pvt/doctodep.btr differ
diff --git a/Inetpub/wwwroot/TimeServer/_vti_pvt/service.cnf b/Inetpub/wwwroot/TimeServer/_vti_pvt/service.cnf
new file mode 100644
index 0000000..c839f1b
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/_vti_pvt/service.cnf
@@ -0,0 +1,20 @@
+vti_encoding:SR|utf8-nl
+vti_casesensitiveurls:IX|0
+vti_httpdversion:SX|Microsoft-IIS/5.0
+vti_textextensions:SX|.txt.actproj.asm.c.cc.cod.cpp.cs.cxx.dbs.def.dsp.dsw.etp.ext.fky.h.hpp.hxx.i.idl.inc.inl.kci.lgn.lst.mak.map.mk.odh.odl.prc.rc.rc2.rct.rgs.rul.s.sql.srf.tab.tlh.tli.trg.txt.udf.udt.user.usr.vap.vb.vcproj.viw.vspscc.vsscc.vssscc.
+vti_featurelist:VX|vti_ACIPAddresses vti_ACCreateNewUsers vti_ACChangePassword vti_ACNoUserGroup vti_ACCreateNewGroups vti_ACModifyGroups vti_ServiceMarkUrlDirExec vti_ServerEmailTransport
+vti_dependenciesood:IR|0
+vti_webservertype:SR|msiis
+vti_publishmetainfokeys:VR|vti_assignedto vti_approvallevel vti_categories vti_description
+vti_categories:VR|Travel Expense\\ Report Business Competition Goals/Objectives Ideas Miscellaneous Waiting VIP In\\ Process Planning Schedule
+vti_htmlextensions:SX|.htm.html.htx.stm.stm.html.htm.shtml.shtm.htt.asp.alx.asa.
+vti_approvallevels:VR|Content\\ Review Legal\\ Review Code\\ Review Manager\\ Review
+vti_timecreated:TR|30 Oct 2002 21:11:23 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_longfilenames:IX|1
+vti_welcomenames:VX|Default.htm Default.asp iisstart.asp Default.aspx
+vti_insecureserverurl:SR|http://localhost
+vti_secureserverurl:SR|https://localhost
+vti_disableautoimgsizeexts:SX|.asp
+vti_oldestcompatibleversion:SR|2.0.0.0
+vti_restartmanual:IX|0
diff --git a/Inetpub/wwwroot/TimeServer/_vti_pvt/service.lck b/Inetpub/wwwroot/TimeServer/_vti_pvt/service.lck
new file mode 100644
index 0000000..e69de29
diff --git a/Inetpub/wwwroot/TimeServer/_vti_pvt/services.cnf b/Inetpub/wwwroot/TimeServer/_vti_pvt/services.cnf
new file mode 100644
index 0000000..b498fd4
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer/_vti_pvt/services.cnf
@@ -0,0 +1 @@
+/
diff --git a/Inetpub/wwwroot/TimeServer/bin/TimeServer.dll b/Inetpub/wwwroot/TimeServer/bin/TimeServer.dll
new file mode 100644
index 0000000..4e14a4b
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer/bin/TimeServer.dll differ
diff --git a/Inetpub/wwwroot/TimeServer/bin/TimeServer.pdb b/Inetpub/wwwroot/TimeServer/bin/TimeServer.pdb
new file mode 100644
index 0000000..a413a5f
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer/bin/TimeServer.pdb differ
diff --git a/Inetpub/wwwroot/TimeServer_2002/AssemblyInfo.vb b/Inetpub/wwwroot/TimeServer_2002/AssemblyInfo.vb
new file mode 100644
index 0000000..a14f4f2
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/AssemblyInfo.vb
@@ -0,0 +1,32 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/Global.asax b/Inetpub/wwwroot/TimeServer_2002/Global.asax
new file mode 100644
index 0000000..ce277a3
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/Global.asax
@@ -0,0 +1 @@
+<%@ Application Codebehind="Global.asax.vb" Inherits="TimeServer.Global" %>
\ No newline at end of file
diff --git a/Inetpub/wwwroot/TimeServer_2002/Global.asax.resx b/Inetpub/wwwroot/TimeServer_2002/Global.asax.resx
new file mode 100644
index 0000000..3f337e0
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/Global.asax.resx
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.0.0.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/Global.asax.vb b/Inetpub/wwwroot/TimeServer_2002/Global.asax.vb
new file mode 100644
index 0000000..25e6587
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/Global.asax.vb
@@ -0,0 +1,59 @@
+Imports System.Web
+Imports System.Web.SessionState
+
+Public Class Global
+ Inherits System.Web.HttpApplication
+
+#Region " Component Designer Generated Code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Component Designer.
+ InitializeComponent()
+
+ 'Add any initialization after the InitializeComponent() call
+
+ End Sub
+
+ 'Required by the Component Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Component Designer
+ 'It can be modified using the Component Designer.
+ 'Do not modify it using the code editor.
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container()
+ End Sub
+
+#End Region
+
+ Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application is started
+ End Sub
+
+ Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session is started
+ End Sub
+
+ Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires at the beginning of each request
+ End Sub
+
+ Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires upon attempting to authenticate the use
+ End Sub
+
+ Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when an error occurs
+ End Sub
+
+ Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the session ends
+ End Sub
+
+ Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
+ ' Fires when the application ends
+ End Sub
+
+End Class
diff --git a/Inetpub/wwwroot/TimeServer_2002/SoapMonitor.vb b/Inetpub/wwwroot/TimeServer_2002/SoapMonitor.vb
new file mode 100644
index 0000000..d2072be
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/SoapMonitor.vb
@@ -0,0 +1,115 @@
+Option Strict On
+Imports System.Web.Services.Protocols
+Imports System.IO
+
+Public Class SoapMonitor : Inherits SoapExtension
+
+ Private OldStream As Stream
+ Private NewStream As Stream
+
+ Public Overloads Overrides Function GetInitializer(ByVal serviceType As System.Type) As Object
+ End Function
+
+ Public Overloads Overrides Function GetInitializer(ByVal methodInfo As System.Web.Services.Protocols.LogicalMethodInfo, ByVal attribute As System.Web.Services.Protocols.SoapExtensionAttribute) As Object
+ End Function
+
+ Public Overrides Sub Initialize(ByVal initializer As Object)
+ End Sub
+
+ Public Overrides Sub ProcessMessage(ByVal Message As System.Web.Services.Protocols.SoapMessage)
+ 'Called after incoming or outgoing data
+ 'has been serialized into SOAP message
+ Dim Logfile As New FileStream("C:\test\test.log", FileMode.Append, FileAccess.Write)
+ Dim LogfileWriter As New StreamWriter(Logfile)
+
+ Select Case Message.Stage
+
+ Case SoapMessageStage.BeforeDeserialize
+ 'Write header details
+ With LogfileWriter
+ .WriteLine("******************************************************")
+ .WriteLine("Web service: " & Message.Url)
+ .WriteLine("Web method: " & Message.Action)
+ .WriteLine("Called at " & DateTime.Now)
+ .WriteLine("Message stage: SOAP REQUEST (" & Message.Stage.ToString & ")")
+ .WriteLine()
+ .Flush()
+ End With
+ 'Write incoming SOAP request message
+ CopyStream(OldStream, NewStream)
+ NewStream.Position = 0
+ CopyStream(NewStream, Logfile)
+ NewStream.Position = 0
+ 'Blank separating line
+ LogfileWriter.WriteLine()
+
+ Case SoapMessageStage.AfterSerialize
+ 'Write header details
+ With LogfileWriter
+ .WriteLine("******************************************************")
+ .WriteLine("Web service: " & Message.Url)
+ .WriteLine("Web method: " & Message.Action)
+ .WriteLine("Called at " & DateTime.Now)
+ .WriteLine("Message stage: SOAP RESPONSE (" & Message.Stage.ToString & ")")
+ .Write("Exception thrown? ")
+ If Message.Exception Is Nothing Then
+ .WriteLine("No")
+ Else
+ .WriteLine("Yes")
+ End If
+ .WriteLine()
+ .Flush()
+ End With
+ 'Write outgoing SOAP response message
+ NewStream.Position = 0
+ CopyStream(NewStream, Logfile)
+ NewStream.Position = 0
+ CopyStream(NewStream, OldStream)
+ 'Blank separating line
+ LogfileWriter.WriteLine()
+
+ End Select
+
+ Logfile.Flush()
+ Logfile.Close()
+
+ End Sub
+
+ Public Overrides Function ChainStream(ByVal stream As System.IO.Stream) As System.IO.Stream
+
+ OldStream = stream
+ NewStream = New MemoryStream
+ Return NewStream
+
+ End Function
+
+ Private Sub CopyStream(ByVal FromStream As Stream, ByVal ToStream As Stream)
+ Dim FromReader As TextReader = New StreamReader(FromStream)
+ Dim ToWriter As TextWriter = New StreamWriter(ToStream)
+
+ ToWriter.WriteLine(FromReader.ReadToEnd)
+ ToWriter.Flush()
+
+ End Sub
+
+End Class
+
+Public Class SoapMonitorAttribute : Inherits SoapExtensionAttribute
+ 'Add this custom attribute to any web method where you want
+ 'to monitor the SOAP request and response messages
+
+ Public Overrides ReadOnly Property ExtensionType() As System.Type
+ Get
+ Return GetType(SoapMonitor)
+ End Get
+ End Property
+
+ Public Overrides Property Priority() As Integer
+ Get
+ Return 0
+ End Get
+ Set(ByVal Value As Integer)
+ End Set
+ End Property
+
+End Class
\ No newline at end of file
diff --git a/Inetpub/wwwroot/TimeServer_2002/TimeServer.vbproj b/Inetpub/wwwroot/TimeServer_2002/TimeServer.vbproj
new file mode 100644
index 0000000..bbd96cb
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/TimeServer.vbproj
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/TimeServer.vbproj.webinfo b/Inetpub/wwwroot/TimeServer_2002/TimeServer.vbproj.webinfo
new file mode 100644
index 0000000..7812035
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/TimeServer.vbproj.webinfo
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx b/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx
new file mode 100644
index 0000000..52307dc
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx
@@ -0,0 +1 @@
+<%@ WebService Language="vb" Codebehind="TimeService.asmx.vb" Class="TimeServer.TimeService" %>
diff --git a/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx.resx b/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx.resx
new file mode 100644
index 0000000..3f337e0
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx.resx
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.0.0.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx.vb b/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx.vb
new file mode 100644
index 0000000..5d4ff9a
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/TimeService.asmx.vb
@@ -0,0 +1,125 @@
+Option Strict On
+
+Imports System.Xml
+Imports System.Web.Services
+Imports System.Web.Services.Protocols
+
+
+ _
+Public Class TimeService : Inherits System.Web.Services.WebService
+
+#Region " Web Services Designer Generated Code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Web Services Designer.
+ InitializeComponent()
+
+ 'Add your own initialization code after the InitializeComponent() call
+
+ End Sub
+
+ 'Required by the Web Services Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Web Services Designer
+ 'It can be modified using the Web Services Designer.
+ 'Do not modify it using the code editor.
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container
+ End Sub
+
+ Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
+ 'CODEGEN: This procedure is required by the Web Services Designer
+ 'Do not modify it using the code editor.
+ If disposing Then
+ If Not (components Is Nothing) Then
+ components.Dispose()
+ End If
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+#End Region
+
+ _
+ Public Function CurrentTime() As String
+ Return System.DateTime.Now.ToLongTimeString
+ End Function
+
+ _
+ Public Sub ThrowExceptionRaw()
+ 'This method throws a raw exception
+ Dim Test As Object
+ Test.ToString()
+
+ End Sub
+
+ _
+ Public Sub ThrowExceptionCustom()
+ 'This method throws a customized exception
+ Try
+ Dim Test As Object
+ Test.ToString()
+ Catch Exc As Exception
+ Throw CustomException(Exc)
+ End Try
+
+ End Sub
+
+ Private Function CustomException(ByVal Exc As Exception) As SoapException
+ Dim doc As New System.Xml.XmlDocument
+
+ 'Create detail node
+ Dim DetailNode As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ SoapException.DetailElementName.Name, _
+ SoapException.DetailElementName.Namespace)
+
+ 'Add original exception type
+ Dim ExcType As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ "ExceptionType", _
+ SoapException.DetailElementName.Namespace)
+ If Context.Request.UserHostAddress = "127.0.0.1" Then
+ ExcType.InnerText = Exc.GetType.ToString
+ Else
+ ExcType.InnerText = "SoapException"
+ End If
+
+ 'Add original exception message
+ Dim ExcMessage As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ "ExceptionMessage", _
+ SoapException.DetailElementName.Namespace)
+ If Context.Request.UserHostAddress = "127.0.0.1" Then
+ ExcMessage.InnerText = Exc.Message
+ Else
+ ExcMessage.InnerText = "Error - no details available"
+ End If
+
+ 'Add original exception stack trace
+ Dim ExcStackTrace As System.Xml.XmlNode = _
+ doc.CreateNode(XmlNodeType.Element, _
+ "ExceptionTrace", _
+ SoapException.DetailElementName.Namespace)
+ If Context.Request.UserHostAddress = "127.0.0.1" Then
+ ExcStackTrace.InnerText = Exc.StackTrace
+ Else
+ ExcStackTrace.InnerText = "No stack trace available"
+ End If
+
+ 'Append the extra details to main detail node
+ DetailNode.AppendChild(ExcType)
+ DetailNode.AppendChild(ExcMessage)
+ DetailNode.AppendChild(ExcStackTrace)
+
+ 'Return new custom SoapException
+ Return New SoapException("", SoapException.ServerFaultCode, _
+ Context.Request.Url.AbsoluteUri, DetailNode)
+
+ End Function
+
+End Class
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/Web.config b/Inetpub/wwwroot/TimeServer_2002/Web.config
new file mode 100644
index 0000000..f68fc1c
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/Web.config
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/access.cnf b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/access.cnf
new file mode 100644
index 0000000..7759afe
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/access.cnf
@@ -0,0 +1,4 @@
+vti_encoding:SR|utf8-nl
+RealmName:CHEETAH
+InheritPermissions:true
+PasswordDir:c:\\inetpub\\wwwroot\\_vti_pvt
diff --git a/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/deptodoc.btr b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/deptodoc.btr
new file mode 100644
index 0000000..f157fe6
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/deptodoc.btr differ
diff --git a/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/doctodep.btr b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/doctodep.btr
new file mode 100644
index 0000000..4b85379
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/doctodep.btr differ
diff --git a/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/service.cnf b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/service.cnf
new file mode 100644
index 0000000..c839f1b
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/service.cnf
@@ -0,0 +1,20 @@
+vti_encoding:SR|utf8-nl
+vti_casesensitiveurls:IX|0
+vti_httpdversion:SX|Microsoft-IIS/5.0
+vti_textextensions:SX|.txt.actproj.asm.c.cc.cod.cpp.cs.cxx.dbs.def.dsp.dsw.etp.ext.fky.h.hpp.hxx.i.idl.inc.inl.kci.lgn.lst.mak.map.mk.odh.odl.prc.rc.rc2.rct.rgs.rul.s.sql.srf.tab.tlh.tli.trg.txt.udf.udt.user.usr.vap.vb.vcproj.viw.vspscc.vsscc.vssscc.
+vti_featurelist:VX|vti_ACIPAddresses vti_ACCreateNewUsers vti_ACChangePassword vti_ACNoUserGroup vti_ACCreateNewGroups vti_ACModifyGroups vti_ServiceMarkUrlDirExec vti_ServerEmailTransport
+vti_dependenciesood:IR|0
+vti_webservertype:SR|msiis
+vti_publishmetainfokeys:VR|vti_assignedto vti_approvallevel vti_categories vti_description
+vti_categories:VR|Travel Expense\\ Report Business Competition Goals/Objectives Ideas Miscellaneous Waiting VIP In\\ Process Planning Schedule
+vti_htmlextensions:SX|.htm.html.htx.stm.stm.html.htm.shtml.shtm.htt.asp.alx.asa.
+vti_approvallevels:VR|Content\\ Review Legal\\ Review Code\\ Review Manager\\ Review
+vti_timecreated:TR|30 Oct 2002 21:11:23 -0000
+vti_extenderversion:SR|4.0.2.5526
+vti_longfilenames:IX|1
+vti_welcomenames:VX|Default.htm Default.asp iisstart.asp Default.aspx
+vti_insecureserverurl:SR|http://localhost
+vti_secureserverurl:SR|https://localhost
+vti_disableautoimgsizeexts:SX|.asp
+vti_oldestcompatibleversion:SR|2.0.0.0
+vti_restartmanual:IX|0
diff --git a/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/service.lck b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/service.lck
new file mode 100644
index 0000000..e69de29
diff --git a/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/services.cnf b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/services.cnf
new file mode 100644
index 0000000..b498fd4
--- /dev/null
+++ b/Inetpub/wwwroot/TimeServer_2002/_vti_pvt/services.cnf
@@ -0,0 +1 @@
+/
diff --git a/Inetpub/wwwroot/TimeServer_2002/bin/TimeServer.dll b/Inetpub/wwwroot/TimeServer_2002/bin/TimeServer.dll
new file mode 100644
index 0000000..ef2b653
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer_2002/bin/TimeServer.dll differ
diff --git a/Inetpub/wwwroot/TimeServer_2002/bin/TimeServer.pdb b/Inetpub/wwwroot/TimeServer_2002/bin/TimeServer.pdb
new file mode 100644
index 0000000..8a30782
Binary files /dev/null and b/Inetpub/wwwroot/TimeServer_2002/bin/TimeServer.pdb differ
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..2b70bf8
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,27 @@
+Freeware License, some rights reserved
+
+Copyright (c) 2003 Mark Pearce
+
+Permission is hereby granted, free of charge, to anyone obtaining a copy
+of this software and associated documentation files (the "Software"),
+to work with the Software within the limits of freeware distribution and fair use.
+This includes the rights to use, copy, and modify the Software for personal use.
+Users are also allowed and encouraged to submit corrections and modifications
+to the Software for the benefit of other users.
+
+It is not allowed to reuse, modify, or redistribute the Software for
+commercial use in any way, or for a user’s educational materials such as books
+or blog articles without prior permission from the copyright holder.
+
+The above copyright notice and this permission notice need to be included
+in all copies or substantial portions of the software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS OR APRESS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9869824
--- /dev/null
+++ b/README.md
@@ -0,0 +1,15 @@
+#Apress Source Code
+
+This repository accompanies [*Comprehensive VB .NET Debugging*](http://www.apress.com/9781590590508) by Mark Pearce (Apress, 2003).
+
+![Cover image](9781590590508.jpg)
+
+Download the files as a zip using the green button, or clone the repository to your machine using Git.
+
+##Releases
+
+Release v1.0 corresponds to the code in the published book, without corrections or updates.
+
+##Contributions
+
+See the file Contributing.md for more information on how you can contribute to this repository.
diff --git a/Source/Changes.txt b/Source/Changes.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Source/ReadMe.txt b/Source/ReadMe.txt
new file mode 100644
index 0000000..abb4833
--- /dev/null
+++ b/Source/ReadMe.txt
@@ -0,0 +1,43 @@
+Welcome!
+--------
+This zip file contains the source code for my book "Comprehensive VB .NET Debugging".
+
+The sample code provided has been tested using the last RC of Visual Studio 2003 and version 1.1 of the .NET Framework. It has also been tested using Visual Studio 2002 and version 1.0 of the .NET Framework.
+
+
+--------------------------
+To extract the source code
+--------------------------
+Use any zip program - be sure to specify that you wish to preserve the directory structure when you unzip the files.
+
+
+-----------------
+File organization
+-----------------
+The source code for each sample can be found in the VisualStudio####\Source\Chapter## sub-folder, where #### is the version of Visual Studio and ## is the number of the chapter.
+
+To conserve space, only source files are provided. You can create the binaries by loading the solution files into Visual Studio and building the applications.
+
+Some folders contain ReadMe.txt files that contain additional information about building that particular example.
+
+
+------------------------------
+Visual Studio 2002 versus 2003
+------------------------------
+You'll notice that all of the code is duplicated under subfolders for Visual Studio 2002 (with .NET Framework 1.0) and Visual Studio 2003 (with .NET Framework 1.1). This is to allow you to open each sample solution using either Visual Studio 2002 or Visual Studio 2003. This approach is necessary because it's quite likely that many readers might not yet have upgraded to Visual Studio 2003, and unfortunately Microsoft decided to make Visual Studio 2003 solutions incompatible with Visual Studio 2002.
+
+So to load a solution into Visual Studio 2003 and have it use version 1.1 of the .NET Framework, use the solution contained under the "VisualStudio2003" folder.
+
+To load the same solution into Visual Studio 2002 and have it use version 1.0 of the .NET Framework, use the solution contained under the "VisualStudio2002" folder.
+
+
+----------------
+Web applications
+----------------
+Please read the individual ReadMe.txt files contained in their respective folders for important information on creating and configuring the web applications discussed in chapters 8 and 9 of this book.
+
+
+-------
+Changes
+-------
+Changes and corrections from the print edition of the book can be found in the file Changes.txt.
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-1/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-1/AssemblyInfo.vb
new file mode 100644
index 0000000..a30ae2c
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-1/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.sln b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.sln
new file mode 100644
index 0000000..050d62b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-1", "Listing2-1.vbproj", "{31835C14-E9E6-4D1D-BCF5-6DACB521A7BF}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {31835C14-E9E6-4D1D-BCF5-6DACB521A7BF}.Debug.ActiveCfg = Debug|.NET
+ {31835C14-E9E6-4D1D-BCF5-6DACB521A7BF}.Debug.Build.0 = Debug|.NET
+ {31835C14-E9E6-4D1D-BCF5-6DACB521A7BF}.Release.ActiveCfg = Release|.NET
+ {31835C14-E9E6-4D1D-BCF5-6DACB521A7BF}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.suo b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.suo
new file mode 100644
index 0000000..b46947f
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.vbproj
new file mode 100644
index 0000000..a0dd709
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.vbproj.user
new file mode 100644
index 0000000..447fdc6
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-1/Listing2-1.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-1/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-1/Test.vb
new file mode 100644
index 0000000..4482e2a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-1/Test.vb
@@ -0,0 +1,10 @@
+Option Strict On
+Module Test
+
+ Sub Main()
+ Console.WriteLine("CInt(True) = " + CInt(True).ToString)
+ Console.WriteLine("Convert(True) = " + Convert.ToInt16(True).ToString)
+ Console.ReadLine()
+ End Sub
+
+End Module
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-10/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-10/AssemblyInfo.vb
new file mode 100644
index 0000000..e112cff
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-10/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.sln b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.sln
new file mode 100644
index 0000000..001af0f
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-10", "Listing2-10.vbproj", "{EF22FDFF-8665-44CF-BADC-362A5663C0C1}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {EF22FDFF-8665-44CF-BADC-362A5663C0C1}.Debug.ActiveCfg = Debug|.NET
+ {EF22FDFF-8665-44CF-BADC-362A5663C0C1}.Debug.Build.0 = Debug|.NET
+ {EF22FDFF-8665-44CF-BADC-362A5663C0C1}.Release.ActiveCfg = Release|.NET
+ {EF22FDFF-8665-44CF-BADC-362A5663C0C1}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.suo b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.suo
new file mode 100644
index 0000000..60f7581
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.vbproj
new file mode 100644
index 0000000..16ca548
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-10/Listing2-10.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-10/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-10/Test.vb
new file mode 100644
index 0000000..f8167fa
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-10/Test.vb
@@ -0,0 +1,75 @@
+Option Strict On
+
+Module CatTester
+
+ Sub Main()
+
+ 'NormalCat
+ Dim objNormalCat As New Cat()
+ With objNormalCat
+ Console.WriteLine("NormalCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ 'LameCat
+ Dim objLameCat As New LameCat()
+ With objLameCat
+ Console.WriteLine("LameCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine("Equal of a cat? " + .Equals(New Cat()).ToString)
+ Console.WriteLine()
+ End With
+
+ 'UglyCat
+ Dim objUglyCat As New Cat()
+ objUglyCat = New LameCat()
+ With objUglyCat
+ Console.WriteLine("UglyCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine("Equal of a cat? " + .Equals(New Cat()).ToString)
+ Console.WriteLine()
+ End With
+
+ Console.ReadLine()
+ End Sub
+
+End Module
+
+Class Cat
+
+ Overridable Function Feet() As Int16
+ Return 4
+ End Function
+
+ Overridable Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+End Class
+
+Class LameCat : Inherits Cat
+
+ Overrides Function Feet() As Int16
+ Return 3
+ End Function
+
+ Overrides Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+ 'This overload doesn't work for a subtle reason
+ ' Overloads Function Equals(ByVal AnyCat As Cat) As Boolean
+ ' Return True
+ ' End Function
+
+ 'This overload works
+ Overloads Overrides Function Equals(ByVal Obj As Object) As Boolean
+ If Object.ReferenceEquals(Obj.GetType, New Cat().GetType) Then
+ Return True
+ Else
+ Return MyBase.Equals(Obj)
+ End If
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-11/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-11/AssemblyInfo.vb
new file mode 100644
index 0000000..6b2d11e
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-11/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.sln b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.sln
new file mode 100644
index 0000000..8172cdc
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-11", "Listing2-11.vbproj", "{0A591B27-8004-4912-A3B5-30B98AB99CBD}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {0A591B27-8004-4912-A3B5-30B98AB99CBD}.Debug.ActiveCfg = Debug|.NET
+ {0A591B27-8004-4912-A3B5-30B98AB99CBD}.Debug.Build.0 = Debug|.NET
+ {0A591B27-8004-4912-A3B5-30B98AB99CBD}.Release.ActiveCfg = Release|.NET
+ {0A591B27-8004-4912-A3B5-30B98AB99CBD}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.suo b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.suo
new file mode 100644
index 0000000..eaf6a2b
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.vbproj
new file mode 100644
index 0000000..814b122
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-11/Listing2-11.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-11/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-11/Test.vb
new file mode 100644
index 0000000..59ebfd6
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-11/Test.vb
@@ -0,0 +1,46 @@
+Option Strict On
+
+Class Animal
+
+ Public Shared Sub Main()
+
+ Dim objMan As New Man()
+ Dim objFeline As New Feline(), objCat As New Cat()
+
+ Console.WriteLine(objMan.ClassName("This Man"))
+ Console.WriteLine(objFeline.ClassName("This Feline"))
+ Console.WriteLine(objCat.ClassName("This Cat"))
+
+ Console.ReadLine()
+
+ End Sub
+
+ Protected Overridable Function ClassName(ByVal CallingType As String) As String
+ Return CallingType + " appears to be an Animal"
+ End Function
+
+End Class
+
+Class Man : Inherits Animal
+
+ Protected Overrides Function ClassName(ByVal CallingType As String) As String
+ Return CallingType + " appears to be a Man"
+ End Function
+
+End Class
+
+Class Feline : Inherits Animal
+
+ Protected Overridable Shadows Function ClassName(ByVal CallingType As String) As String
+ Return CallingType + " appears to be a Feline"
+ End Function
+
+End Class
+
+Class Cat : Inherits Feline
+
+ Protected Overrides Function ClassName(ByVal CallingType As String) As String
+ Return CallingType + " appears to be a Cat"
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-12/AssemblyInfo.vb
new file mode 100644
index 0000000..0b31830
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.sln b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.sln
new file mode 100644
index 0000000..0e6cd83
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-12", "Listing2-12.vbproj", "{F7816CB3-4B61-46D1-9241-1846A926DF73}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {F7816CB3-4B61-46D1-9241-1846A926DF73}.Debug.ActiveCfg = Debug|.NET
+ {F7816CB3-4B61-46D1-9241-1846A926DF73}.Debug.Build.0 = Debug|.NET
+ {F7816CB3-4B61-46D1-9241-1846A926DF73}.Release.ActiveCfg = Release|.NET
+ {F7816CB3-4B61-46D1-9241-1846A926DF73}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.suo b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.suo
new file mode 100644
index 0000000..b780328
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.vbproj
new file mode 100644
index 0000000..86d9417
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12/Listing2-12.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-12/Test.vb
new file mode 100644
index 0000000..900e2ae
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12/Test.vb
@@ -0,0 +1,32 @@
+Option Strict On
+
+Class Test
+
+ Shared Sub Main()
+ Dim objDerived As New Derived()
+ Console.WriteLine(objDerived.ClassName())
+ Console.WriteLine(objDerived.BaseName())
+ Console.ReadLine()
+ End Sub
+
+End Class
+
+Class Base
+
+ Public Overridable Function ClassName() As String
+ Return MyClass.ToString
+ End Function
+
+End Class
+
+Class Derived : Inherits Base
+
+ Public Overrides Function ClassName() As String
+ Return MyClass.ToString
+ End Function
+
+ Public Function BaseName() As String
+ Return MyBase.ClassName()
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/AssemblyInfo.vb
new file mode 100644
index 0000000..0dcf904
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.sln b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.sln
new file mode 100644
index 0000000..1b14374
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-12Stackframe", "Listing2-12Stackframe.vbproj", "{1CFE5D0F-986E-4E1C-A72A-A210B05D289F}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {1CFE5D0F-986E-4E1C-A72A-A210B05D289F}.Debug.ActiveCfg = Debug|.NET
+ {1CFE5D0F-986E-4E1C-A72A-A210B05D289F}.Debug.Build.0 = Debug|.NET
+ {1CFE5D0F-986E-4E1C-A72A-A210B05D289F}.Release.ActiveCfg = Release|.NET
+ {1CFE5D0F-986E-4E1C-A72A-A210B05D289F}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.suo b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.suo
new file mode 100644
index 0000000..35ac77d
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.vbproj
new file mode 100644
index 0000000..b5d5c71
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Listing2-12Stackframe.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Test.vb
new file mode 100644
index 0000000..3bc515a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-12Stackframe/Test.vb
@@ -0,0 +1,37 @@
+Class Test
+
+ Public Shared Sub Main()
+ Dim objDerived As New Derived(), objBase As New Base()
+ Console.WriteLine(objDerived.ClassName())
+ Console.WriteLine(objDerived.BaseName())
+ Console.ReadLine()
+ End Sub
+
+ Public Shared Function ImmediateClassName() As String
+ Dim objStackFrame As New Diagnostics.StackFrame(1)
+ Return objStackFrame.GetMethod.DeclaringType.FullName
+ End Function
+
+End Class
+
+Class Base
+
+ Public Overridable Function ClassName() As String
+ 'Return MyClass.ToString
+ Return Test.ImmediateClassName
+ End Function
+
+End Class
+
+Class Derived : Inherits Base
+
+ Public Overrides Function ClassName() As String
+ 'Return MyClass.ToString
+ Return Test.ImmediateClassName
+ End Function
+
+ Public Function BaseName() As String
+ Return MyBase.ClassName()
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-18/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-18/AssemblyInfo.vb
new file mode 100644
index 0000000..7a043b5
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-18/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.sln b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.sln
new file mode 100644
index 0000000..8a6e7be
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-18", "Listing2-18.vbproj", "{4EC7FFD5-79F6-41A4-88B1-D34DDDB520D5}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {4EC7FFD5-79F6-41A4-88B1-D34DDDB520D5}.Debug.ActiveCfg = Debug|.NET
+ {4EC7FFD5-79F6-41A4-88B1-D34DDDB520D5}.Debug.Build.0 = Debug|.NET
+ {4EC7FFD5-79F6-41A4-88B1-D34DDDB520D5}.Release.ActiveCfg = Release|.NET
+ {4EC7FFD5-79F6-41A4-88B1-D34DDDB520D5}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.suo b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.suo
new file mode 100644
index 0000000..b94e53a
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.vbproj
new file mode 100644
index 0000000..b55281e
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-18/Listing2-18.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-18/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-18/Test.vb
new file mode 100644
index 0000000..b50b6ca
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-18/Test.vb
@@ -0,0 +1,32 @@
+Option Strict Off
+
+Module Test
+
+ Sub Main()
+
+ Console.WriteLine("Developer sees: " & WhatDeveloperSees.ToString)
+ Console.WriteLine("Compiler says: " & WhatCompilerSees.ToString)
+ Console.ReadLine()
+
+ End Sub
+
+ Function WhatDeveloperWrites() As Integer
+ Dim A As Integer = 0, B As Integer = 1, C As Integer = 2
+ A = B = C
+ Return A
+ End Function
+
+ Function WhatDeveloperSees() As Integer
+ Dim A As Integer = 0, B As Integer = 1, C As Integer = 2
+ B = C
+ A = B
+ Return A
+ End Function
+
+ Function WhatCompilerSees() As Integer
+ Dim A As Integer = 0, B As Integer = 1, C As Integer = 2
+ A = CInt(CBool(B = C))
+ Return A
+ End Function
+
+End Module
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-2/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-2/AssemblyInfo.vb
new file mode 100644
index 0000000..ed6a10b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-2/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.sln b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.sln
new file mode 100644
index 0000000..d8a367b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-2", "Listing2-2.vbproj", "{19A44278-676F-492D-8EB2-7C47C9EEDDDE}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {19A44278-676F-492D-8EB2-7C47C9EEDDDE}.Debug.ActiveCfg = Debug|.NET
+ {19A44278-676F-492D-8EB2-7C47C9EEDDDE}.Debug.Build.0 = Debug|.NET
+ {19A44278-676F-492D-8EB2-7C47C9EEDDDE}.Release.ActiveCfg = Release|.NET
+ {19A44278-676F-492D-8EB2-7C47C9EEDDDE}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.suo b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.suo
new file mode 100644
index 0000000..ee754ed
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.vbproj
new file mode 100644
index 0000000..6211e15
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.vbproj.user
new file mode 100644
index 0000000..447fdc6
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-2/Listing2-2.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-2/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-2/Test.vb
new file mode 100644
index 0000000..642f4fb
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-2/Test.vb
@@ -0,0 +1,35 @@
+Option Strict On
+
+Class Test
+
+ Public Shared Sub Main()
+ Dim objMyTest As New Derived()
+ With objMyTest
+ .WriteLine(10)
+ .WriteLine(10.5)
+ .WriteLine("11")
+ End With
+ Console.ReadLine()
+ End Sub
+
+End Class
+
+Class Base
+
+ Public Sub WriteLine(ByVal AnyString As String)
+ Console.WriteLine(AnyString + " called Base:String")
+ End Sub
+
+ Public Sub WriteLine(ByVal AnyInteger As Integer)
+ Console.WriteLine(AnyInteger.ToString + " called Base:Integer")
+ End Sub
+
+End Class
+
+Class Derived : Inherits Base
+
+ Public Overloads Sub WriteLine(ByVal AnyDouble As Double)
+ Console.WriteLine(AnyDouble.ToString + " called Derived:Double")
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/App.ico b/Source/VisualStudio2002/Chapter02/Listing2-21/App.ico
new file mode 100644
index 0000000..3a5525f
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-21/App.ico differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/AssemblyInfo.cs b/Source/VisualStudio2002/Chapter02/Listing2-21/AssemblyInfo.cs
new file mode 100644
index 0000000..9f89a32
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-21/AssemblyInfo.cs
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the
+// Microsoft .NET Framework documentation for more information on assembly signing.
+//
+// Use the attributes below to control which key is used for signing.
+//
+// Notes:
+// (*) If no key is specified, the assembly is not signed.
+// (*) KeyName refers to a key that has been installed in the Crypto Service
+// Provider (CSP) on your machine. KeyFile refers to a file which contains
+// a key.
+// (*) If the KeyFile and the KeyName values are both specified, the
+// following processing occurs:
+// (1) If the KeyName can be found in the CSP, that key is used.
+// (2) If the KeyName does not exist and the KeyFile does exist, the key
+// in the KeyFile is installed into the CSP and used.
+// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
+// When specifying the KeyFile, the location of the KeyFile should be
+// relative to the project output directory which is
+// %Project Directory%\obj\. For example, if your KeyFile is
+// located in the project directory, you would specify the AssemblyKeyFile
+// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+// documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.csproj b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.csproj
new file mode 100644
index 0000000..22008bb
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.csproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.csproj.user b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.csproj.user
new file mode 100644
index 0000000..e1f4628
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.csproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.sln b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.sln
new file mode 100644
index 0000000..3f6c9f3
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Listing2-21", "Listing2-21.csproj", "{4A3E4205-AC32-4528-BAA8-9A29F869DB90}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {4A3E4205-AC32-4528-BAA8-9A29F869DB90}.Debug.ActiveCfg = Debug|.NET
+ {4A3E4205-AC32-4528-BAA8-9A29F869DB90}.Debug.Build.0 = Debug|.NET
+ {4A3E4205-AC32-4528-BAA8-9A29F869DB90}.Release.ActiveCfg = Release|.NET
+ {4A3E4205-AC32-4528-BAA8-9A29F869DB90}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.suo b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.suo
new file mode 100644
index 0000000..7cb9849
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-21/Listing2-21.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/Test.cs b/Source/VisualStudio2002/Chapter02/Listing2-21/Test.cs
new file mode 100644
index 0000000..59f688d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-21/Test.cs
@@ -0,0 +1,10 @@
+class Test
+ {
+ public static void Main()
+ {
+ int A = 0; int B = 1; int C = 2;
+ A = B = C;
+ System.Console.WriteLine("Developer and compiler both see: " + A);
+ System.Console.ReadLine();
+ }
+ }
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/obj/Debug/Listing2-21.exe.incr b/Source/VisualStudio2002/Chapter02/Listing2-21/obj/Debug/Listing2-21.exe.incr
new file mode 100644
index 0000000..5e28457
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-21/obj/Debug/Listing2-21.exe.incr differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-21/obj/Debug/Listing2-21.projdata b/Source/VisualStudio2002/Chapter02/Listing2-21/obj/Debug/Listing2-21.projdata
new file mode 100644
index 0000000..ac541ef
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-21/obj/Debug/Listing2-21.projdata differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-23/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-23/AssemblyInfo.vb
new file mode 100644
index 0000000..92cb0fe
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-23/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.sln b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.sln
new file mode 100644
index 0000000..8da8d1a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-23", "Listing2-23.vbproj", "{A32A373F-CB08-48F6-80B2-5C6C0671BB58}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {A32A373F-CB08-48F6-80B2-5C6C0671BB58}.Debug.ActiveCfg = Debug|.NET
+ {A32A373F-CB08-48F6-80B2-5C6C0671BB58}.Debug.Build.0 = Debug|.NET
+ {A32A373F-CB08-48F6-80B2-5C6C0671BB58}.Release.ActiveCfg = Release|.NET
+ {A32A373F-CB08-48F6-80B2-5C6C0671BB58}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.suo b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.suo
new file mode 100644
index 0000000..1810824
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.vbproj
new file mode 100644
index 0000000..0553928
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-23/Listing2-23.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-23/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-23/Test.vb
new file mode 100644
index 0000000..cb46568
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-23/Test.vb
@@ -0,0 +1,23 @@
+Option Strict On
+
+Module BoxingTest
+
+ Sub Main()
+ Dim MyBoolean As Boolean = False
+ Dim MyObject As Object = False
+
+ SwitchBoolean(CType(MyBoolean, Boolean))
+ Console.WriteLine("MyBoolean = " & MyBoolean.ToString)
+
+ SwitchBoolean(MyObject)
+ Console.WriteLine("MyObject = " & MyObject.ToString)
+
+ Console.ReadLine()
+
+ End Sub
+
+ Private Sub SwitchBoolean(ByRef TestBoolean As Object)
+ TestBoolean = True
+ End Sub
+
+End Module
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-24/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-24/AssemblyInfo.vb
new file mode 100644
index 0000000..c10371f
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-24/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.sln b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.sln
new file mode 100644
index 0000000..cfcc213
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-24", "Listing2-24.vbproj", "{9EB9FD3F-D64A-4AA0-86E3-91D55050FCAB}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {9EB9FD3F-D64A-4AA0-86E3-91D55050FCAB}.Debug.ActiveCfg = Debug|.NET
+ {9EB9FD3F-D64A-4AA0-86E3-91D55050FCAB}.Debug.Build.0 = Debug|.NET
+ {9EB9FD3F-D64A-4AA0-86E3-91D55050FCAB}.Release.ActiveCfg = Release|.NET
+ {9EB9FD3F-D64A-4AA0-86E3-91D55050FCAB}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.suo b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.suo
new file mode 100644
index 0000000..18ff258
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.vbproj
new file mode 100644
index 0000000..55af9a8
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.vbproj.user
new file mode 100644
index 0000000..eabb41d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-24/Listing2-24.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-24/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-24/Test.vb
new file mode 100644
index 0000000..ed87459
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-24/Test.vb
@@ -0,0 +1,107 @@
+Option Strict On
+
+Module Test
+
+ Sub Main()
+ Dim intTest As Integer, dblTest As Double
+ Dim intZero As Integer = 0, blnExceptionThrown As Boolean = False
+
+ 'First test
+ Console.WriteLine("Integer division by zero assigned to integer:")
+ blnExceptionThrown = False
+ Try
+ intTest = 5 \ intZero
+ Catch objException As Exception
+ Console.WriteLine(objException.Message)
+ blnExceptionThrown = True
+ Finally
+ If blnExceptionThrown = True Then
+ Console.WriteLine("Result: not available")
+ Else
+ Console.WriteLine("No exception was thrown")
+ Console.WriteLine("Result: " + intTest.ToString)
+ End If
+ Console.WriteLine()
+ End Try
+
+ 'Second test
+ Console.WriteLine("Integer division by zero assigned to double:")
+ blnExceptionThrown = False
+ Try
+ dblTest = 5 \ intZero
+ Catch objException As Exception
+ Console.WriteLine(objException.Message)
+ blnExceptionThrown = True
+ Finally
+ If blnExceptionThrown = True Then
+ Console.WriteLine("Result: not available")
+ Else
+ Console.WriteLine("No exception was thrown")
+ Console.WriteLine("Result: " + dblTest.ToString)
+ End If
+ Console.WriteLine()
+ End Try
+
+ 'Third test
+ Console.WriteLine("Float division by zero assigned to integer:")
+ blnExceptionThrown = False
+ Try
+ intTest = CInt(5 / intZero)
+ Catch objException As Exception
+ Console.WriteLine(objException.Message)
+ blnExceptionThrown = True
+ Finally
+ If blnExceptionThrown = True Then
+ Console.WriteLine("Result: not available")
+ Else
+ Console.WriteLine("No exception was thrown")
+ Console.WriteLine("Result: " + intTest.ToString)
+ End If
+ Console.WriteLine()
+ End Try
+
+ 'Fourth test
+ Console.WriteLine("Float division by zero assigned to double:")
+ blnExceptionThrown = False
+ Try
+ dblTest = 5 / intZero
+ Catch objException As Exception
+ Console.WriteLine(objException.Message)
+ blnExceptionThrown = True
+ Finally
+ If blnExceptionThrown = True Then
+ Console.WriteLine("Result: not available")
+ Else
+ Console.WriteLine("No exception was thrown")
+ Console.WriteLine("Result: " + dblTest.ToString)
+ Console.WriteLine("Is infinity: " + CStr(Double.IsInfinity(dblTest)))
+ Console.WriteLine("Is not a number: " + CStr(Double.IsNaN(dblTest)))
+ End If
+ Console.WriteLine()
+ End Try
+
+ 'Fifth test
+ Console.WriteLine("Float division of zero by zero assigned to double:")
+ blnExceptionThrown = False
+ Try
+ dblTest = intZero / intZero
+ Catch objException As Exception
+ Console.WriteLine(objException.Message)
+ blnExceptionThrown = True
+ Finally
+ If blnExceptionThrown = True Then
+ Console.WriteLine("Result: not available")
+ Else
+ Console.WriteLine("No exception was thrown")
+ Console.WriteLine("Result: " + dblTest.ToString)
+ Console.WriteLine("Is infinity: " + CStr(Double.IsInfinity(dblTest)))
+ Console.WriteLine("Is not a number: " + CStr(Double.IsNaN(dblTest)))
+ End If
+ Console.WriteLine()
+ End Try
+
+ Console.ReadLine()
+
+ End Sub
+
+End Module
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-25/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-25/AssemblyInfo.vb
new file mode 100644
index 0000000..84c17c4
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-25/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.sln b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.sln
new file mode 100644
index 0000000..82d6b70
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-25", "Listing2-25.vbproj", "{A67EAD24-F695-4109-A756-A2E90EAA7FC8}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {A67EAD24-F695-4109-A756-A2E90EAA7FC8}.Debug.ActiveCfg = Debug|.NET
+ {A67EAD24-F695-4109-A756-A2E90EAA7FC8}.Debug.Build.0 = Debug|.NET
+ {A67EAD24-F695-4109-A756-A2E90EAA7FC8}.Release.ActiveCfg = Release|.NET
+ {A67EAD24-F695-4109-A756-A2E90EAA7FC8}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.suo b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.suo
new file mode 100644
index 0000000..5acfc3c
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.vbproj
new file mode 100644
index 0000000..e254014
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.vbproj.user
new file mode 100644
index 0000000..eabb41d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-25/Listing2-25.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-25/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-25/Test.vb
new file mode 100644
index 0000000..17f8202
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-25/Test.vb
@@ -0,0 +1,19 @@
+Option Strict On
+
+Module Test
+
+ Sub Main()
+
+ Console.WriteLine(Single.NaN = Single.NaN)
+ Console.WriteLine((Single.NaN - Single.NaN) = 0)
+
+ Console.WriteLine(Single.PositiveInfinity = Single.PositiveInfinity)
+ Console.WriteLine((Single.PositiveInfinity - Single.PositiveInfinity) = 0)
+
+ Console.WriteLine(1.0 < Single.NaN)
+ Console.WriteLine(1.0 >= Single.NaN)
+ Console.ReadLine()
+
+ End Sub
+
+End Module
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-26/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-26/AssemblyInfo.vb
new file mode 100644
index 0000000..001c7ee
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-26/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.sln b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.sln
new file mode 100644
index 0000000..d11ea21
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-26", "Listing2-26.vbproj", "{DB29A1E1-1989-42D3-AA4E-E93FBB148C5A}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {DB29A1E1-1989-42D3-AA4E-E93FBB148C5A}.Debug.ActiveCfg = Debug|.NET
+ {DB29A1E1-1989-42D3-AA4E-E93FBB148C5A}.Debug.Build.0 = Debug|.NET
+ {DB29A1E1-1989-42D3-AA4E-E93FBB148C5A}.Release.ActiveCfg = Release|.NET
+ {DB29A1E1-1989-42D3-AA4E-E93FBB148C5A}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.suo b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.suo
new file mode 100644
index 0000000..352a558
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.vbproj
new file mode 100644
index 0000000..faafda0
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.vbproj.user
new file mode 100644
index 0000000..eabb41d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-26/Listing2-26.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-26/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-26/Test.vb
new file mode 100644
index 0000000..cd14f55
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-26/Test.vb
@@ -0,0 +1,33 @@
+Option Strict On
+
+Module Test
+
+ Sub Main()
+
+ Try
+ Console.WriteLine(CalcTotalOne(Single.NaN))
+ Console.WriteLine(CalcTotalTwo(Single.NaN))
+ Catch ex As Exception
+ Console.WriteLine(ex.Message)
+ Finally
+ Console.ReadLine()
+ End Try
+
+ End Sub
+
+ Function CalcTotalOne(ByVal PurchaseAmount As Single) As Single
+ If PurchaseAmount < 0.0 Then
+ Throw New ArgumentException("PurchaseAmount must be >= zero")
+ End If
+ Return PurchaseAmount * 1.08F
+ End Function
+
+ Function CalcTotalTwo(ByVal PurchaseAmount As Single) As Single
+ If PurchaseAmount >= 0.0 Then
+ Return PurchaseAmount * 1.08F
+ Else
+ Throw New ArgumentException("PurchaseAmount must be >= zero")
+ End If
+ End Function
+
+End Module
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-27/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-27/AssemblyInfo.vb
new file mode 100644
index 0000000..8f8910b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-27/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.sln b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.sln
new file mode 100644
index 0000000..6c4f1e3
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-27", "Listing2-27.vbproj", "{32EAEC9E-0E5B-49F5-BF9E-B9793ED0406D}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {32EAEC9E-0E5B-49F5-BF9E-B9793ED0406D}.Debug.ActiveCfg = Debug|.NET
+ {32EAEC9E-0E5B-49F5-BF9E-B9793ED0406D}.Debug.Build.0 = Debug|.NET
+ {32EAEC9E-0E5B-49F5-BF9E-B9793ED0406D}.Release.ActiveCfg = Release|.NET
+ {32EAEC9E-0E5B-49F5-BF9E-B9793ED0406D}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.suo b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.suo
new file mode 100644
index 0000000..e2f21f1
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.vbproj
new file mode 100644
index 0000000..d7d1ce7
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.vbproj.user
new file mode 100644
index 0000000..eabb41d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-27/Listing2-27.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-27/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-27/Test.vb
new file mode 100644
index 0000000..97b4892
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-27/Test.vb
@@ -0,0 +1,15 @@
+Option Strict On
+
+Module Test
+
+ Sub Main()
+
+ Dim X As Double, Y As Double
+ X = 10 ^ 18
+ Y = X + 1
+ Console.WriteLine("X = Y? " + (X = Y).ToString)
+ Console.ReadLine()
+
+ End Sub
+
+End Module
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-28/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-28/AssemblyInfo.vb
new file mode 100644
index 0000000..46393c4
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-28/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.sln b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.sln
new file mode 100644
index 0000000..873642b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-28", "Listing2-28.vbproj", "{B3EE10CE-CD50-48E4-AFA3-77D21E7190CC}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {B3EE10CE-CD50-48E4-AFA3-77D21E7190CC}.Debug.ActiveCfg = Debug|.NET
+ {B3EE10CE-CD50-48E4-AFA3-77D21E7190CC}.Debug.Build.0 = Debug|.NET
+ {B3EE10CE-CD50-48E4-AFA3-77D21E7190CC}.Release.ActiveCfg = Release|.NET
+ {B3EE10CE-CD50-48E4-AFA3-77D21E7190CC}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.suo b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.suo
new file mode 100644
index 0000000..bb6cc1a
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.vbproj
new file mode 100644
index 0000000..87f30cd
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.vbproj.user
new file mode 100644
index 0000000..c168d10
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-28/Listing2-28.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-28/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-28/Test.vb
new file mode 100644
index 0000000..fbc67ae
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-28/Test.vb
@@ -0,0 +1,12 @@
+Option Strict On
+
+Module Test
+
+ Sub Main()
+ Dim X As Double = 2.45, Y As Double = 245
+ X *= 100
+ Console.WriteLine("X = Y? " + (X = Y).ToString)
+ Console.ReadLine()
+ End Sub
+
+End Module
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-3/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-3/AssemblyInfo.vb
new file mode 100644
index 0000000..ecb4d27
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-3/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.sln b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.sln
new file mode 100644
index 0000000..3c4cdcd
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-3", "Listing2-3.vbproj", "{E1D2974A-2952-4B9D-A767-0783A0FE75F8}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {E1D2974A-2952-4B9D-A767-0783A0FE75F8}.Debug.ActiveCfg = Debug|.NET
+ {E1D2974A-2952-4B9D-A767-0783A0FE75F8}.Debug.Build.0 = Debug|.NET
+ {E1D2974A-2952-4B9D-A767-0783A0FE75F8}.Release.ActiveCfg = Release|.NET
+ {E1D2974A-2952-4B9D-A767-0783A0FE75F8}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.suo b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.suo
new file mode 100644
index 0000000..3358830
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.vbproj
new file mode 100644
index 0000000..e9677ae
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-3/Listing2-3.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-3/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-3/Test.vb
new file mode 100644
index 0000000..e27213b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-3/Test.vb
@@ -0,0 +1,35 @@
+Option Strict On
+
+Class Test
+
+ Public Shared Sub Main()
+ Dim objDerived As New Derived()
+ Dim objTest As New MyTest()
+ objDerived.DoSomething(objTest)
+ Console.ReadLine()
+ End Sub
+
+End Class
+
+Class MyTest
+End Class
+
+Class Base
+
+ Public Overridable Sub DoSomething(ByVal NewValue As MyTest)
+ Console.WriteLine("Base:DoSomething(MyTest) called")
+ End Sub
+
+End Class
+
+Class Derived : Inherits Base
+
+ Public Overloads Overrides Sub DoSomething(ByVal NewValue As MyTest)
+ Console.WriteLine("Derived:DoSomething(MyTest) called")
+ End Sub
+
+ Public Overloads Sub DoSomething(ByVal NewValue As Object)
+ Console.WriteLine("Derived:DoSomething(Object) called")
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/App.ico b/Source/VisualStudio2002/Chapter02/Listing2-4/App.ico
new file mode 100644
index 0000000..3a5525f
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-4/App.ico differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/AssemblyInfo.cs b/Source/VisualStudio2002/Chapter02/Listing2-4/AssemblyInfo.cs
new file mode 100644
index 0000000..9f89a32
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-4/AssemblyInfo.cs
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the
+// Microsoft .NET Framework documentation for more information on assembly signing.
+//
+// Use the attributes below to control which key is used for signing.
+//
+// Notes:
+// (*) If no key is specified, the assembly is not signed.
+// (*) KeyName refers to a key that has been installed in the Crypto Service
+// Provider (CSP) on your machine. KeyFile refers to a file which contains
+// a key.
+// (*) If the KeyFile and the KeyName values are both specified, the
+// following processing occurs:
+// (1) If the KeyName can be found in the CSP, that key is used.
+// (2) If the KeyName does not exist and the KeyFile does exist, the key
+// in the KeyFile is installed into the CSP and used.
+// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
+// When specifying the KeyFile, the location of the KeyFile should be
+// relative to the project output directory which is
+// %Project Directory%\obj\. For example, if your KeyFile is
+// located in the project directory, you would specify the AssemblyKeyFile
+// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+// documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.csproj b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.csproj
new file mode 100644
index 0000000..f724ae3
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.csproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.csproj.user b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.csproj.user
new file mode 100644
index 0000000..6893790
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.csproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.sln b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.sln
new file mode 100644
index 0000000..acd5370
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Listing2-4", "Listing2-4.csproj", "{19931BA2-7550-4959-A597-ECECD054B2C8}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {19931BA2-7550-4959-A597-ECECD054B2C8}.Debug.ActiveCfg = Debug|.NET
+ {19931BA2-7550-4959-A597-ECECD054B2C8}.Debug.Build.0 = Debug|.NET
+ {19931BA2-7550-4959-A597-ECECD054B2C8}.Release.ActiveCfg = Release|.NET
+ {19931BA2-7550-4959-A597-ECECD054B2C8}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.suo b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.suo
new file mode 100644
index 0000000..68b8fae
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-4/Listing2-4.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/Test.cs b/Source/VisualStudio2002/Chapter02/Listing2-4/Test.cs
new file mode 100644
index 0000000..6ed7d5b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-4/Test.cs
@@ -0,0 +1,32 @@
+class Test
+{
+ public static void Main()
+ {
+ Derived objDerived = new Derived();
+ MyTest objMyTest = new MyTest();
+ objDerived.DoSomething(objMyTest);
+ System.Console.ReadLine();
+ }
+}
+
+class MyTest {}
+
+class Base
+{
+ public virtual void DoSomething(MyTest MyParameter)
+ {
+ System.Console.WriteLine("Base:DoSomething(MyTest) called");
+ }
+}
+
+class Derived : Base
+{
+ public override void DoSomething(MyTest MyParameter)
+ {
+ System.Console.WriteLine("Derived:DoSomething(MyTest) called");
+ }
+ public void DoSomething(object MyParameter)
+ {
+ System.Console.WriteLine("Derived:DoSomething(Object) called");
+ }
+}
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/obj/Debug/Listing2-4.exe.incr b/Source/VisualStudio2002/Chapter02/Listing2-4/obj/Debug/Listing2-4.exe.incr
new file mode 100644
index 0000000..d696965
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-4/obj/Debug/Listing2-4.exe.incr differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-4/obj/Debug/Listing2-4.projdata b/Source/VisualStudio2002/Chapter02/Listing2-4/obj/Debug/Listing2-4.projdata
new file mode 100644
index 0000000..b81a845
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-4/obj/Debug/Listing2-4.projdata differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-5/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-5/AssemblyInfo.vb
new file mode 100644
index 0000000..a0c7309
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-5/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.sln b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.sln
new file mode 100644
index 0000000..4c8d15d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-5", "Listing2-5.vbproj", "{8D6E435F-6608-4BEE-90FF-7B7CC145399E}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {8D6E435F-6608-4BEE-90FF-7B7CC145399E}.Debug.ActiveCfg = Debug|.NET
+ {8D6E435F-6608-4BEE-90FF-7B7CC145399E}.Debug.Build.0 = Debug|.NET
+ {8D6E435F-6608-4BEE-90FF-7B7CC145399E}.Release.ActiveCfg = Release|.NET
+ {8D6E435F-6608-4BEE-90FF-7B7CC145399E}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.suo b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.suo
new file mode 100644
index 0000000..f88aa8e
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.vbproj
new file mode 100644
index 0000000..39758dd
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.vbproj.user
new file mode 100644
index 0000000..eabb41d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-5/Listing2-5.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-5/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-5/Test.vb
new file mode 100644
index 0000000..c32567b
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-5/Test.vb
@@ -0,0 +1,33 @@
+Option Strict On
+
+Class Test
+
+ Public Shared Sub Main()
+ Dim objDerived As New Derived()
+ objDerived.DoSomething(CLng(8))
+ Console.ReadLine()
+ End Sub
+
+End Class
+
+Class Base
+
+ Public Overridable Sub DoSomething(ByVal NewValue As Long)
+ Console.WriteLine("Base:DoSomething(Long) called")
+ End Sub
+
+ Public Sub DoSomething(ByVal NewValue As Double)
+ Console.WriteLine("Base:DoSomething(Double) called")
+ End Sub
+End Class
+
+Class Derived : Inherits Base
+
+ Public Overloads Overrides Sub DoSomething(ByVal NewValue As Long)
+ Console.WriteLine("Derived:DoSomething(Long) called")
+ End Sub
+
+ Public Overloads Sub DoSomething(ByVal NewValue As Integer)
+ Console.WriteLine("Derived:DoSomething(Integer) called")
+ End Sub
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/App.ico b/Source/VisualStudio2002/Chapter02/Listing2-6/App.ico
new file mode 100644
index 0000000..3a5525f
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-6/App.ico differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/AssemblyInfo.cs b/Source/VisualStudio2002/Chapter02/Listing2-6/AssemblyInfo.cs
new file mode 100644
index 0000000..9f89a32
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-6/AssemblyInfo.cs
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the
+// Microsoft .NET Framework documentation for more information on assembly signing.
+//
+// Use the attributes below to control which key is used for signing.
+//
+// Notes:
+// (*) If no key is specified, the assembly is not signed.
+// (*) KeyName refers to a key that has been installed in the Crypto Service
+// Provider (CSP) on your machine. KeyFile refers to a file which contains
+// a key.
+// (*) If the KeyFile and the KeyName values are both specified, the
+// following processing occurs:
+// (1) If the KeyName can be found in the CSP, that key is used.
+// (2) If the KeyName does not exist and the KeyFile does exist, the key
+// in the KeyFile is installed into the CSP and used.
+// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
+// When specifying the KeyFile, the location of the KeyFile should be
+// relative to the project output directory which is
+// %Project Directory%\obj\. For example, if your KeyFile is
+// located in the project directory, you would specify the AssemblyKeyFile
+// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+// documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.csproj b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.csproj
new file mode 100644
index 0000000..d3e03d5
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.csproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.csproj.user b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.csproj.user
new file mode 100644
index 0000000..c8340ea
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.csproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.sln b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.sln
new file mode 100644
index 0000000..41c076e
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Listing2-6", "Listing2-6.csproj", "{3A2336E2-DF01-47F4-97DC-F20E39391250}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {3A2336E2-DF01-47F4-97DC-F20E39391250}.Debug.ActiveCfg = Debug|.NET
+ {3A2336E2-DF01-47F4-97DC-F20E39391250}.Debug.Build.0 = Debug|.NET
+ {3A2336E2-DF01-47F4-97DC-F20E39391250}.Release.ActiveCfg = Release|.NET
+ {3A2336E2-DF01-47F4-97DC-F20E39391250}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.suo b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.suo
new file mode 100644
index 0000000..d339a74
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-6/Listing2-6.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/Test.cs b/Source/VisualStudio2002/Chapter02/Listing2-6/Test.cs
new file mode 100644
index 0000000..f07f788
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-6/Test.cs
@@ -0,0 +1,35 @@
+class Test
+{
+ public static void Main()
+ {
+ Derived objDerived = new Derived();
+ objDerived.DoSomething((long) 8);
+ System.Console.ReadLine();
+ }
+}
+
+class Base
+{
+ public virtual void DoSomething(long NewValue)
+ {
+ System.Console.WriteLine("Base:DoSomething(Long) called");
+ }
+
+ public void DoSomething(double NewValue)
+ {
+ System.Console.WriteLine("Base:DoSomething(Double) called");
+ }
+}
+
+class Derived : Base
+{
+ override public void DoSomething(long NewValue)
+ {
+ System.Console.WriteLine("Derived:DoSomething(long) called");
+ }
+
+ public void DoSomething(int NewValue)
+ {
+ System.Console.WriteLine("Derived:DoSomething(Integer) called");
+ }
+}
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/obj/Debug/Listing2-6.exe.incr b/Source/VisualStudio2002/Chapter02/Listing2-6/obj/Debug/Listing2-6.exe.incr
new file mode 100644
index 0000000..145ffd4
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-6/obj/Debug/Listing2-6.exe.incr differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-6/obj/Debug/Listing2-6.projdata b/Source/VisualStudio2002/Chapter02/Listing2-6/obj/Debug/Listing2-6.projdata
new file mode 100644
index 0000000..965f944
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-6/obj/Debug/Listing2-6.projdata differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-7/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-7/AssemblyInfo.vb
new file mode 100644
index 0000000..78700b2
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-7/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.sln b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.sln
new file mode 100644
index 0000000..1a557d4
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-7", "Listing2-7.vbproj", "{D582898F-DD17-42D9-A004-E22CF2E2CEB2}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {D582898F-DD17-42D9-A004-E22CF2E2CEB2}.Debug.ActiveCfg = Debug|.NET
+ {D582898F-DD17-42D9-A004-E22CF2E2CEB2}.Debug.Build.0 = Debug|.NET
+ {D582898F-DD17-42D9-A004-E22CF2E2CEB2}.Release.ActiveCfg = Release|.NET
+ {D582898F-DD17-42D9-A004-E22CF2E2CEB2}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.suo b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.suo
new file mode 100644
index 0000000..d415f71
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.vbproj
new file mode 100644
index 0000000..0f69392
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-7/Listing2-7.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-7/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-7/Test.vb
new file mode 100644
index 0000000..b625010
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-7/Test.vb
@@ -0,0 +1,14 @@
+Option Strict On
+
+Class Base
+ Overridable Sub DoSomething()
+ 'The method definition goes here
+ End Sub
+End Class
+
+Class Derived : Inherits Base
+ Sub DoSomething()
+ 'This method will actually shadow its base method rather than Override it,
+ 'because the developer forgot to add the Overrides keyword
+ End Sub
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-8/AssemblyInfo.vb
new file mode 100644
index 0000000..5b7ce5a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.sln b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.sln
new file mode 100644
index 0000000..95b3330
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-8", "Listing2-8.vbproj", "{56218072-CB2B-49E2-B000-3180711BBC10}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {56218072-CB2B-49E2-B000-3180711BBC10}.Debug.ActiveCfg = Debug|.NET
+ {56218072-CB2B-49E2-B000-3180711BBC10}.Debug.Build.0 = Debug|.NET
+ {56218072-CB2B-49E2-B000-3180711BBC10}.Release.ActiveCfg = Release|.NET
+ {56218072-CB2B-49E2-B000-3180711BBC10}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.suo b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.suo
new file mode 100644
index 0000000..ac269f6
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.vbproj
new file mode 100644
index 0000000..f318073
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.vbproj.user
new file mode 100644
index 0000000..447fdc6
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8/Listing2-8.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-8/Test.vb
new file mode 100644
index 0000000..234fa28
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8/Test.vb
@@ -0,0 +1,59 @@
+Option Strict On
+
+Module CatTester
+
+ Sub Main()
+
+ 'NormalCat
+ Dim objNormalCat As New Cat()
+ With objNormalCat
+ Console.WriteLine("NormalCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ 'LameCat
+ Dim objLameCat As New LameCat()
+ With objLameCat
+ Console.WriteLine("LameCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ 'UglyCat
+ Dim objUglyCat As New Cat()
+ objUglyCat = New LameCat()
+ With objUglyCat
+ Console.WriteLine("UglyCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ Console.ReadLine()
+ End Sub
+
+End Module
+
+Class Cat
+
+ Overridable Function Feet() As Int16
+ Return 4
+ End Function
+
+ Overridable Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+End Class
+
+Class LameCat : Inherits Cat
+
+ Overrides Function Feet() As Int16
+ Return 3
+ End Function
+
+ Overrides Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/AssemblyInfo.vb
new file mode 100644
index 0000000..58b4bee
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.sln b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.sln
new file mode 100644
index 0000000..86cfd7a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-8Shadows", "Listing2-8Shadows.vbproj", "{BB663C40-7108-4457-8984-E194358B1817}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {BB663C40-7108-4457-8984-E194358B1817}.Debug.ActiveCfg = Debug|.NET
+ {BB663C40-7108-4457-8984-E194358B1817}.Debug.Build.0 = Debug|.NET
+ {BB663C40-7108-4457-8984-E194358B1817}.Release.ActiveCfg = Release|.NET
+ {BB663C40-7108-4457-8984-E194358B1817}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.suo b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.suo
new file mode 100644
index 0000000..9b54850
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.vbproj
new file mode 100644
index 0000000..83b139e
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.vbproj.user
new file mode 100644
index 0000000..a6e254a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Listing2-8Shadows.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Test.vb
new file mode 100644
index 0000000..24757cc
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-8Shadows/Test.vb
@@ -0,0 +1,59 @@
+Option Strict On
+
+Module CatTester
+
+ Sub Main()
+
+ 'NormalCat
+ Dim objNormalCat As New Cat()
+ With objNormalCat
+ Console.WriteLine("NormalCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ 'LameCat
+ Dim objLameCat As New LameCat()
+ With objLameCat
+ Console.WriteLine("LameCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ 'UglyCat
+ Dim objUglyCat As New Cat()
+ objUglyCat = New LameCat()
+ With objUglyCat
+ Console.WriteLine("UglyCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ Console.ReadLine()
+ End Sub
+
+End Module
+
+Class Cat
+
+ Overridable Function Feet() As Int16
+ Return 4
+ End Function
+
+ Overridable Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+End Class
+
+Class LameCat : Inherits Cat
+
+ Shadows Function Feet() As Int16
+ Return 3
+ End Function
+
+ Overrides Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-9/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter02/Listing2-9/AssemblyInfo.vb
new file mode 100644
index 0000000..73c3d1a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-9/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.sln b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.sln
new file mode 100644
index 0000000..35d2b2d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Listing2-9", "Listing2-9.vbproj", "{BDC11796-30AC-4600-9B6C-7446DD16279D}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {BDC11796-30AC-4600-9B6C-7446DD16279D}.Debug.ActiveCfg = Debug|.NET
+ {BDC11796-30AC-4600-9B6C-7446DD16279D}.Debug.Build.0 = Debug|.NET
+ {BDC11796-30AC-4600-9B6C-7446DD16279D}.Release.ActiveCfg = Release|.NET
+ {BDC11796-30AC-4600-9B6C-7446DD16279D}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.suo b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.suo
new file mode 100644
index 0000000..e81ec59
Binary files /dev/null and b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.suo differ
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.vbproj b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.vbproj
new file mode 100644
index 0000000..488767e
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.vbproj
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.vbproj.user b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.vbproj.user
new file mode 100644
index 0000000..447fdc6
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-9/Listing2-9.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter02/Listing2-9/Test.vb b/Source/VisualStudio2002/Chapter02/Listing2-9/Test.vb
new file mode 100644
index 0000000..a0489ac
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter02/Listing2-9/Test.vb
@@ -0,0 +1,66 @@
+Option Strict On
+
+Module CatTester
+
+ Sub Main()
+
+ 'NormalCat
+ Dim objNormalCat As New Cat()
+ With objNormalCat
+ Console.WriteLine("NormalCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine()
+ End With
+
+ 'LameCat
+ Dim objLameCat As New LameCat()
+ With objLameCat
+ Console.WriteLine("LameCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine("Equal of a cat? " + .Equals(New Cat()).ToString)
+ Console.WriteLine()
+ End With
+
+ 'UglyCat
+ Dim objUglyCat As New Cat()
+ objUglyCat = New LameCat()
+ With objUglyCat
+ Console.WriteLine("UglyCat is a " + .GetType.Name)
+ Console.WriteLine("It has " + .Legs.ToString + " legs and " + .Feet.ToString + " feet")
+ Console.WriteLine("Equal of a cat? " + .Equals(New Cat()).ToString)
+ Console.WriteLine()
+ End With
+
+ Console.ReadLine()
+ End Sub
+
+End Module
+
+Class Cat
+
+ Overridable Function Feet() As Int16
+ Return 4
+ End Function
+
+ Overridable Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+End Class
+
+Class LameCat : Inherits Cat
+
+ Overrides Function Feet() As Int16
+ Return 3
+ End Function
+
+ Overrides Function Legs() As Int16
+ Return Me.Feet
+ End Function
+
+ 'This overload doesn't work for a subtle reason
+ Overloads Function Equals(ByVal AnyCat As Cat) As Boolean
+ Return True
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter04/SortingSpeed/AssemblyInfo.vb
new file mode 100644
index 0000000..e68a407
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
+
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemo.sln b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemo.sln
new file mode 100644
index 0000000..b71c4dc
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemo.sln
@@ -0,0 +1,33 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DebugDemoLogic", "SortingDll\DebugDemoLogic.vbproj", "{057FA2D6-5280-4393-BE33-C6631BA07451}"
+EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DebugDemoForm", "DebugDemoForm.vbproj", "{1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}"
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ ConfigName.0 = Debug
+ ConfigName.1 = Release
+ ConfigName.2 = ReleaseCustom
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.0 = {057FA2D6-5280-4393-BE33-C6631BA07451}
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {057FA2D6-5280-4393-BE33-C6631BA07451}.Debug.ActiveCfg = Debug|.NET
+ {057FA2D6-5280-4393-BE33-C6631BA07451}.Debug.Build.0 = Debug|.NET
+ {057FA2D6-5280-4393-BE33-C6631BA07451}.Release.ActiveCfg = Release|.NET
+ {057FA2D6-5280-4393-BE33-C6631BA07451}.Release.Build.0 = Release|.NET
+ {057FA2D6-5280-4393-BE33-C6631BA07451}.ReleaseCustom.ActiveCfg = ReleaseCustom|.NET
+ {057FA2D6-5280-4393-BE33-C6631BA07451}.ReleaseCustom.Build.0 = ReleaseCustom|.NET
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.Debug.ActiveCfg = Debug|.NET
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.Debug.Build.0 = Debug|.NET
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.Release.ActiveCfg = Release|.NET
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.Release.Build.0 = Release|.NET
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.ReleaseCustom.ActiveCfg = Release|.NET
+ {1AA3BEBF-5A57-486B-B4E1-84A24B1D5AB9}.ReleaseCustom.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemo.suo b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemo.suo
new file mode 100644
index 0000000..f1ee9bc
Binary files /dev/null and b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemo.suo differ
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemoForm.vbproj b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemoForm.vbproj
new file mode 100644
index 0000000..1eff798
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemoForm.vbproj
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemoForm.vbproj.user b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemoForm.vbproj.user
new file mode 100644
index 0000000..7d7a099
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/DebugDemoForm.vbproj.user
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/DemoForm.resx b/Source/VisualStudio2002/Chapter04/SortingSpeed/DemoForm.resx
new file mode 100644
index 0000000..363456d
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/DemoForm.resx
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ Assembly
+
+
+ True
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ Assembly
+
+
+ True
+
+
+ DebugDemo
+
+
\ No newline at end of file
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/DemoForm.vb b/Source/VisualStudio2002/Chapter04/SortingSpeed/DemoForm.vb
new file mode 100644
index 0000000..cf4ee1a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/DemoForm.vb
@@ -0,0 +1,207 @@
+Public Class DebugDemo
+ Inherits System.Windows.Forms.Form
+
+#Region " Windows Form Designer generated code "
+
+ Public Sub New()
+ MyBase.New()
+
+ 'This call is required by the Windows Form Designer.
+ InitializeComponent()
+
+ 'Add any initialization after the InitializeComponent() call
+
+ End Sub
+
+ 'Form overrides dispose to clean up the component list.
+ Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing Then
+ If Not (components Is Nothing) Then
+ components.Dispose()
+ End If
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ Friend WithEvents lblTwo As System.Windows.Forms.Label
+ Friend WithEvents lblOne As System.Windows.Forms.Label
+ Friend WithEvents boxSort As System.Windows.Forms.GroupBox
+ Friend WithEvents Timing As System.Windows.Forms.Label
+ Friend WithEvents StartSort As System.Windows.Forms.Button
+ Friend WithEvents MaxValue As System.Windows.Forms.TextBox
+ Friend WithEvents NumberItems As System.Windows.Forms.TextBox
+ Friend WithEvents SortCounting As System.Windows.Forms.RadioButton
+ Friend WithEvents SortQuick As System.Windows.Forms.RadioButton
+ Friend WithEvents SortSelection As System.Windows.Forms.RadioButton
+ Friend WithEvents SortBubble As System.Windows.Forms.RadioButton
+ Private Sub InitializeComponent()
+ Me.lblTwo = New System.Windows.Forms.Label()
+ Me.lblOne = New System.Windows.Forms.Label()
+ Me.StartSort = New System.Windows.Forms.Button()
+ Me.MaxValue = New System.Windows.Forms.TextBox()
+ Me.NumberItems = New System.Windows.Forms.TextBox()
+ Me.boxSort = New System.Windows.Forms.GroupBox()
+ Me.SortCounting = New System.Windows.Forms.RadioButton()
+ Me.SortQuick = New System.Windows.Forms.RadioButton()
+ Me.SortSelection = New System.Windows.Forms.RadioButton()
+ Me.SortBubble = New System.Windows.Forms.RadioButton()
+ Me.Timing = New System.Windows.Forms.Label()
+ Me.boxSort.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'lblTwo
+ '
+ Me.lblTwo.Location = New System.Drawing.Point(32, 96)
+ Me.lblTwo.Name = "lblTwo"
+ Me.lblTwo.Size = New System.Drawing.Size(112, 30)
+ Me.lblTwo.TabIndex = 14
+ Me.lblTwo.Text = "Max item value"
+ '
+ 'lblOne
+ '
+ Me.lblOne.Location = New System.Drawing.Point(32, 40)
+ Me.lblOne.Name = "lblOne"
+ Me.lblOne.Size = New System.Drawing.Size(112, 30)
+ Me.lblOne.TabIndex = 12
+ Me.lblOne.Text = "Number of items"
+ '
+ 'StartSort
+ '
+ Me.StartSort.Location = New System.Drawing.Point(280, 285)
+ Me.StartSort.Name = "StartSort"
+ Me.StartSort.Size = New System.Drawing.Size(92, 39)
+ Me.StartSort.TabIndex = 10
+ Me.StartSort.Text = "Start sort"
+ '
+ 'MaxValue
+ '
+ Me.MaxValue.Location = New System.Drawing.Point(160, 96)
+ Me.MaxValue.Name = "MaxValue"
+ Me.MaxValue.Size = New System.Drawing.Size(72, 22)
+ Me.MaxValue.TabIndex = 13
+ Me.MaxValue.Text = "10000"
+ '
+ 'NumberItems
+ '
+ Me.NumberItems.Location = New System.Drawing.Point(160, 40)
+ Me.NumberItems.Name = "NumberItems"
+ Me.NumberItems.Size = New System.Drawing.Size(72, 22)
+ Me.NumberItems.TabIndex = 11
+ Me.NumberItems.Text = "1000"
+ '
+ 'boxSort
+ '
+ Me.boxSort.Controls.AddRange(New System.Windows.Forms.Control() {Me.SortCounting, Me.SortQuick, Me.SortSelection, Me.SortBubble})
+ Me.boxSort.Location = New System.Drawing.Point(280, 16)
+ Me.boxSort.Name = "boxSort"
+ Me.boxSort.Size = New System.Drawing.Size(232, 247)
+ Me.boxSort.TabIndex = 9
+ Me.boxSort.TabStop = False
+ Me.boxSort.Text = "Sort algorithm"
+ '
+ 'SortCounting
+ '
+ Me.SortCounting.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.SortCounting.Location = New System.Drawing.Point(41, 178)
+ Me.SortCounting.Name = "SortCounting"
+ Me.SortCounting.Size = New System.Drawing.Size(164, 29)
+ Me.SortCounting.TabIndex = 3
+ Me.SortCounting.Text = "Counting sort"
+ '
+ 'SortQuick
+ '
+ Me.SortQuick.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.SortQuick.Location = New System.Drawing.Point(41, 128)
+ Me.SortQuick.Name = "SortQuick"
+ Me.SortQuick.Size = New System.Drawing.Size(164, 30)
+ Me.SortQuick.TabIndex = 2
+ Me.SortQuick.Text = "Quick sort"
+ '
+ 'SortSelection
+ '
+ Me.SortSelection.Location = New System.Drawing.Point(41, 79)
+ Me.SortSelection.Name = "SortSelection"
+ Me.SortSelection.Size = New System.Drawing.Size(164, 30)
+ Me.SortSelection.TabIndex = 1
+ Me.SortSelection.Text = "Selection sort"
+ '
+ 'SortBubble
+ '
+ Me.SortBubble.Checked = True
+ Me.SortBubble.Location = New System.Drawing.Point(41, 30)
+ Me.SortBubble.Name = "SortBubble"
+ Me.SortBubble.Size = New System.Drawing.Size(164, 29)
+ Me.SortBubble.TabIndex = 0
+ Me.SortBubble.TabStop = True
+ Me.SortBubble.Text = "Bubble sort"
+ '
+ 'Timing
+ '
+ Me.Timing.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
+ Me.Timing.Location = New System.Drawing.Point(400, 288)
+ Me.Timing.Name = "Timing"
+ Me.Timing.Size = New System.Drawing.Size(112, 32)
+ Me.Timing.TabIndex = 15
+ '
+ 'DebugDemo
+ '
+ Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)
+ Me.ClientSize = New System.Drawing.Size(544, 348)
+ Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Timing, Me.lblTwo, Me.lblOne, Me.StartSort, Me.MaxValue, Me.NumberItems, Me.boxSort})
+ Me.Name = "DebugDemo"
+ Me.Text = "Debug demo"
+ Me.boxSort.ResumeLayout(False)
+ Me.ResumeLayout(False)
+
+ End Sub
+
+#End Region
+
+ Private m_SortType As DemoSort.SortType = DemoSort.SortType.BubbleSort
+
+ Private Sub StartSort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartSort.Click
+ Dim SortObject As New DemoSort()
+
+ 'Show that we're busy
+ Cursor.Current = Cursors.WaitCursor
+ Me.StartSort.Enabled = False
+
+ 'Build a list to sort
+ Me.Timing.Text = "Building list to sort..."
+ Me.Timing.Refresh()
+ SortObject.ListBuild(Convert.ToInt32(Me.NumberItems.Text), 1, Convert.ToInt32(Me.MaxValue.Text))
+
+ 'Do the sort and report timing
+ Me.Timing.Text = "Performing sort..."
+ Me.Timing.Refresh()
+ Me.Timing.Text = SortObject.DoSort(m_SortType).ToString & " seconds"
+
+ 'Show that we've finished
+ Me.StartSort.Enabled = True
+ Cursor.Current = Cursors.Default
+
+ End Sub
+
+ Private Sub SortBubble_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SortBubble.CheckedChanged
+ m_SortType = DemoSort.SortType.BubbleSort
+ End Sub
+
+ Private Sub SortSelection_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SortSelection.CheckedChanged
+ m_SortType = DemoSort.SortType.SelectionSort
+ End Sub
+
+ Private Sub SortQuick_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SortQuick.CheckedChanged
+ m_SortType = DemoSort.SortType.QuickSort
+ End Sub
+
+ Private Sub SortCounting_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SortCounting.CheckedChanged
+ m_SortType = DemoSort.SortType.CountingSort
+ End Sub
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/AssemblyInfo.vb
new file mode 100644
index 0000000..240f036
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/AssemblyInfo.vb
@@ -0,0 +1,30 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DebugDemoLogic.vbproj b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DebugDemoLogic.vbproj
new file mode 100644
index 0000000..498d34a
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DebugDemoLogic.vbproj
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DebugDemoLogic.vbproj.user b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DebugDemoLogic.vbproj.user
new file mode 100644
index 0000000..ff746ab
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DebugDemoLogic.vbproj.user
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DemoSort.vb b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DemoSort.vb
new file mode 100644
index 0000000..13cc2f8
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter04/SortingSpeed/SortingDll/DemoSort.vb
@@ -0,0 +1,265 @@
+Option Strict On
+
+Public Class DemoSort
+
+ 'These are the sorting lists
+ Private ListUnsorted() As Int32
+ Private ListBeingSorted() As Int32
+ 'These are max and minimum sort settings
+ Private ListLengthMin As Int32
+ Private ListLengthMax As Int32
+ Private ListValueMin As Int32
+ Private ListValueMax As Int32
+
+ Public Enum SortType As Integer
+ BubbleSort = 1
+ SelectionSort = 2
+ QuickSort = 3
+ CountingSort = 4
+ End Enum
+
+ Public Sub ListBuild(ByVal ListLength As Int32, ByVal ValueMin As Int32, ByVal ValueMax As Int32)
+ Dim ArrayItem As Int32, objRandom As New System.Random(1)
+
+ 'If parameters haven't changed, just use previous list
+ 'This enables multiple timing checks on an identical array
+ If ListLength = ListLengthMax And ValueMin = ListValueMin And ValueMax = ListValueMax Then
+ Exit Sub
+ End If
+
+ 'Build a new list with given parameters
+ ReDim ListUnsorted(ListLength)
+ For ArrayItem = 1 To ListLength
+ ListUnsorted(ArrayItem) = objRandom.Next(ValueMin, ValueMax)
+ Next ArrayItem
+
+ 'Set length of sorted list to match
+ ReDim ListBeingSorted(ListLength)
+
+ 'Store min and max list items and values
+ ListLengthMin = 1
+ ListLengthMax = ListLength
+ ListValueMin = ValueMin
+ ListValueMax = ValueMax
+
+ End Sub
+
+ Public Function DoSort(ByVal Sort As SortType) As Double
+ Dim TimeStart As Int32, TimeFinish As Int32, ArrayItem As Int32
+
+ 'Copy to array that will contain newly-sorted list
+ For ArrayItem = ListLengthMin To ListLengthMax
+ ListBeingSorted(ArrayItem) = ListUnsorted(ArrayItem)
+ Next
+
+ 'Start the clock so we can report how long the sorting took
+ TimeStart = System.Environment.TickCount()
+
+ 'Do the sort
+ Select Case Sort
+ Case SortType.BubbleSort
+ SortBubble(ListLengthMin, ListLengthMax)
+ Case SortType.QuickSort
+ SortQuick(ListLengthMin, ListLengthMax)
+ Case SortType.SelectionSort
+ SortSelection()
+ Case SortType.CountingSort
+ SortCounting()
+ Case Else
+ Trace.Fail(CStr(Sort) & " is an invalid sort type")
+ End Select
+
+ 'Stop the clock and report how long the sorting took
+ TimeFinish = System.Environment.TickCount()
+ 'Check sort
+ SortCheck()
+ 'Convert elapsed time into seconds
+ Return (TimeFinish - TimeStart) / 1000
+
+ End Function
+
+ Private Sub SortBubble(ByVal ItemLow As Int32, ByVal ItemHigh As Int32)
+ Dim intLastSwap As Int32, intLoop1 As Int32, intLoop2 As Int32
+ Dim intDrop As Int32
+
+ 'Repeat until we are done
+ Do While ItemLow < ItemHigh
+
+ 'First bubble upwards
+ intLastSwap = ItemLow - 1
+ intLoop1 = ItemLow + 1
+
+ Do While intLoop1 <= ItemHigh
+ 'Find a bubble
+ If ListBeingSorted(intLoop1 - 1) > ListBeingSorted(intLoop1) Then
+ 'See where to drop the bubble
+ intDrop = ListBeingSorted(intLoop1 - 1)
+ intLoop2 = intLoop1
+ Do While ListBeingSorted(intLoop2) < intDrop
+ ListBeingSorted(intLoop2 - 1) = ListBeingSorted(intLoop2)
+ intLoop2 += 1
+ If intLoop2 > ItemHigh Then
+ Exit Do
+ End If
+ Loop
+ ListBeingSorted(intLoop2 - 1) = intDrop
+ intLastSwap = intLoop2 - 1
+ intLoop1 = intLoop2 + 1
+ Else
+ intLoop1 += 1
+ End If
+ Loop
+
+ 'Update maximum value
+ ItemHigh = intLastSwap - 1
+
+ 'Next bubble downwards
+ intLastSwap = ItemHigh + 1
+ intLoop1 = ItemHigh - 1
+
+ Do While intLoop1 >= ItemLow
+ 'Find a bubble
+ If ListBeingSorted(intLoop1 + 1) < ListBeingSorted(intLoop1) Then
+ 'See where to drop the bubble
+ intDrop = ListBeingSorted(intLoop1 + 1)
+ intLoop2 = intLoop1
+ Do While ListBeingSorted(intLoop2) > intDrop
+ ListBeingSorted(intLoop2 + 1) = ListBeingSorted(intLoop2)
+ intLoop2 -= 1
+ If intLoop2 < ItemLow Then
+ Exit Do
+ End If
+ Loop
+ ListBeingSorted(intLoop2 + 1) = intDrop
+ intLastSwap = intLoop2 + 1
+ intLoop1 = intLoop2 - 1
+ Else
+ intLoop1 -= 1
+ End If
+ Loop
+
+ 'Update minimum value
+ ItemLow = intLastSwap + 1
+
+ Loop
+
+ End Sub
+
+ Private Sub SortSelection()
+ Dim LoopOuter As Int32, LoopInner As Int32, BestValue As Int32, BestInnerIndex As Int32
+
+ For LoopOuter = ListLengthMin To ListLengthMax - 1
+
+ 'Init lowest-value search
+ BestValue = ListBeingSorted(LoopOuter)
+ BestInnerIndex = LoopOuter
+
+ 'Find lowest value that hasn't already been sorted
+ For LoopInner = LoopOuter + 1 To ListLengthMax
+ If ListBeingSorted(LoopInner) < BestValue Then
+ BestValue = ListBeingSorted(LoopInner)
+ BestInnerIndex = LoopInner
+ End If
+ Next LoopInner
+
+ 'Swap lowest value into proper position
+ ListBeingSorted(BestInnerIndex) = ListBeingSorted(LoopOuter)
+ ListBeingSorted(LoopOuter) = BestValue
+
+ Next LoopOuter
+
+ End Sub
+
+ Private Sub SortQuick(ByVal ItemLow As Int32, ByVal ItemHigh As Int32)
+ Dim IntermediateValue As Int32, Position As Int32
+ Dim objRandom As New System.Random()
+ Dim intLow As Int32, intHigh As Int32
+
+ 'If the list has only 1 element, it's already sorted
+ If ItemLow >= ItemHigh Then Exit Sub
+
+ 'Pick a dividing item
+ Position = objRandom.Next(ItemLow, ItemHigh)
+ IntermediateValue = ListBeingSorted(Position)
+
+ 'Swap it to the front so we can find it easily
+ ListBeingSorted(Position) = ListBeingSorted(ItemLow)
+
+ 'Move the items smaller than this into the left
+ 'half of the list. Move the others into the right.
+ intLow = ItemLow
+ intHigh = ItemHigh
+ Do
+ 'Look down from low item for a value < IntermediateValue
+ Do While ListBeingSorted(intHigh) >= IntermediateValue
+ intHigh -= 1
+ If intHigh <= intLow Then Exit Do
+ Loop
+ If intHigh <= intLow Then
+ ListBeingSorted(intLow) = IntermediateValue
+ Exit Do
+ End If
+
+ 'Swap the low and high values
+ ListBeingSorted(intLow) = ListBeingSorted(intHigh)
+
+ 'Look up from ItemLow for a value >= IntermediateValue
+ intLow += 1
+ Do While ListBeingSorted(intLow) < IntermediateValue
+ intLow += 1
+ If intLow >= intHigh Then Exit Do
+ Loop
+ If intLow >= intHigh Then
+ intLow = intHigh
+ ListBeingSorted(intHigh) = IntermediateValue
+ Exit Do
+ End If
+
+ 'Swap the low and high items
+ ListBeingSorted(intHigh) = ListBeingSorted(intLow)
+ Loop
+
+ 'Sort the two sublists recursively
+ SortQuick(ItemLow, intLow - 1)
+ SortQuick(intHigh + 1, ItemHigh)
+
+ End Sub
+
+ Private Sub SortCounting()
+ Dim ListCounts(ListValueMax) As Int32
+ Dim ArrayItem As Int32, ThisCount As Int32, NextOffset As Int32
+
+ 'Count the items
+ For ArrayItem = ListLengthMin To ListLengthMax
+ ListCounts(ListUnsorted(ArrayItem)) += 1
+ Next ArrayItem
+
+ 'Convert the ListCounts into offsets
+ NextOffset = ListLengthMin
+ For ArrayItem = ListValueMin To ListValueMax
+ ThisCount = ListCounts(ArrayItem)
+ ListCounts(ArrayItem) = NextOffset
+ NextOffset += ThisCount
+ Next ArrayItem
+
+ 'Place the items in the sorted array
+ For ArrayItem = ListLengthMin To ListLengthMax
+ ListBeingSorted(ListCounts(ListUnsorted(ArrayItem))) = ListUnsorted(ArrayItem)
+ ListCounts(ListUnsorted(ArrayItem)) += 1
+ Next ArrayItem
+
+ End Sub
+
+ Private Function SortCheck() As Boolean
+ Dim ArrayItem As Int32
+
+ For ArrayItem = 2 To ListLengthMax
+ If ListBeingSorted(ArrayItem - 1) > ListBeingSorted(ArrayItem) Then
+ Trace.Fail("Item " & (ArrayItem - 1).ToString & " is larger than item " & ArrayItem.ToString)
+ Exit For
+ End If
+ Next ArrayItem
+
+ End Function
+
+End Class
diff --git a/Source/VisualStudio2002/Chapter04/SortingSpeed/obj/Debug/DebugDemo.DebugDemo.resources b/Source/VisualStudio2002/Chapter04/SortingSpeed/obj/Debug/DebugDemo.DebugDemo.resources
new file mode 100644
index 0000000..24379ba
Binary files /dev/null and b/Source/VisualStudio2002/Chapter04/SortingSpeed/obj/Debug/DebugDemo.DebugDemo.resources differ
diff --git a/Source/VisualStudio2002/Chapter05/ErrorHandling/AssemblyInfo.vb b/Source/VisualStudio2002/Chapter05/ErrorHandling/AssemblyInfo.vb
new file mode 100644
index 0000000..1ab76fe
--- /dev/null
+++ b/Source/VisualStudio2002/Chapter05/ErrorHandling/AssemblyInfo.vb
@@ -0,0 +1,31 @@
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+