APPENDIX A

Project Files

This Appendix explains which files are created for each project type in Visual Studio .NET 2003 and their various descriptions. First, you'll see the project types and the files created by default with those project types. Then, in the second section, you'll see these various file types explained.

Project Types and Their Associated Files Table A-1 presents the project types and their associated files. For an explanation of the file types themselves, please refer to the next section.

TableA-1. Project Types Serial References Added Files Created Number Project Type by Default by Wizard 1 Wmdows Application System.dll Assembly Information File: A project for creating an System.Data.dll Assemblyinfo.cs or application with a Wmdows System.Drawing.dll Assemblyinfo.vb user interface. System.Windows.Forms.dll Source Code File: (vb orcs) System.XML.dll Resource File: resx Project me: csproj or vbproj Visual Studio Solution: Sln ICON File: I co (not created for VB) Visual Studio Project User Options: Csproj. user Solution User Options: . suo 2 Class Library System.dll Source Code File: -(vb orcs) A project for creating System.Data.dll Assembly Information File: classes to use in System.XML.dll Assemblyinfo. cs or other applications. Assemblyinfo.vb By default, on creation Project File: csproj or vbproj of a Class Library, a Visual Studio Solution: Sln class is also created Visual Studio Project User for writing code. Options: csproj. user or vbproj . user Solution User Options: . suo

Continued 491 492 APPENDIX A- PROJECT FILES

Table A-I. Project Types (continued) Serial References Added Files Created Number Project Type by Default by Wizard 3 Windows Control library System.dl Source Code File: (vb orcs) A project for creating System.Data.dll Assembly Information File: controls to use in System.Drawing.dll Assemblylnfo.cs or Windows applications. System.Windows.Forms.dll Assemblylnfo.vb System.XML.dll Project File: csproj or vbproj Visual Studio Solution: Sln Visual Studio Project User Options: csproj. user or vbproj.user Resource File: resx Solution User Options: . suo 4 ASP.NETWeb Application System.dll Assembly Information File: A project for creating an System.Data.dll Assemblylnfo.cs or application with a Web System.Drawing.dll Assemblylnfo.vb user interface. The source System.Web.dll Global Application Class: code file added has a class System.XML.dll Global. asax that inherits from System Resource rue: Global. asax. resx .Web.UI.Page. Note that Source Code File: the Solution file is created Global. asax. cs or in the My Documents folder. Global.asax.vb Style Sheet: Styles. css (not created for C# project) Application Configuration File: Web. config Project File: csproj or vbproj Weblnfo File: . csproj. web info or .vbproj.webinfo Web Form: WebForml. aspx Resource File: WebForml.aspx.resx Source Code file (Code Behind): WebForml. aspx. cs or WebForml.aspx.vb Visual Studio Solution: Sln. Solution User Options: . suo APPENDIX A PROJECT FILES 493

Table A-I. Project Types (continued) Serial References Added Files Created Number Project Type by Default by Wizard 5 Web Service A project for creating XML System.dll Assembly Information File: Web services to use from System.Data.dll Assembly!nfo. cs or other applications. The System.Web.dll Assembly!nfo.vb source code file added has SystemWeb.WebServices.dll Global Application Class: a class Inherits System. System.XML.dll Global. a sax Web.Services.WebService. ~urceFil~Global.asax.resx Note that the Solution file Source Code File: is created in the My Global. a sax. vb or Documents folder. Global. a sax. cs ApplicationCo~tionFile Web.config ProjectFile: Csproj or vbproj Weblnfo File: .csproj .webinfo or .vbproj.webinfo Web Service: asmx Resource File: Servicel.asmx.resx Source Code File (Code Behind): asmx.cs or asmx. vb Visual Studio Solution: Sln Solution User Options: . suo 6 ASP.NET Mobile System.dll Assembly Information File: Web Application System.Data.dll Assembly!nfo.cs or A project for creating an System.Drawing.dll Assemblylnfo.vb application viewable on System.Web.dll Global Application Class: PDAs, cellphones, and System.Web.Mobile.dll Global.asax other mobile devices. The System.XML.dll Resource File: source code file added has Global.asax.resx a class that inherits from Source Code File: System. Web. UI.Mobile• Global. a sax. vb or Controls.MobilePage. The Global. a sax. cs Solution file is created in Application Configuration the My Documents folder. File: Web. config Project File: csproj or vbproj Weblnfo File: . csproj. web info or .vbproj.webinfo Web Form: WebForml. aspx Resource File: WebForml.aspx.resx Source Code File (Code Behind):WebForml.aspx.cs orWebForml.aspx.vb Visual Studio Solution: Sln Solution User Options: . suo

Continued 494 APPENDIX A - PROJECT FILES

TableA-1. Project TJpes (continued) Serial References Added Files Created Number Project Type by DefauH by Wizard 7 Web Control library System.dll Assembly Information File: A project for creating System.Drawing.dll Assemblyinfo.cs or controls to use in Web System.Web.dll Assemblyinfo.vb applications. The source Project File: csproj or vbproj code file added has a class Visual Studio Solution: Sln that inherits from Visual Studio Project User System. Web. UI.• Options: csproj. user or WebControls.WebControl. vbproj.user Source Code File: vb or cs Solution User Options: . suo 8 Console Application System.dll Assembly Information File: A project for creating System.Drawing.dll Assemblylnfo.cs or a command-line System.Data.dll Assemblylnfo.vb application. It is important Project File: csproj or vbproj to note in the source code Visual Studio Solution: Sln file that a class is created Visual Studio Project User for a C# project, while a Options: csproj. user or v module is created for a bproj.user VB Project. Source Code File: vb or cs ICON File: leo (not created for VB) Solution User Options: . suo 9 Windows Service System.dll Assembly Information File: A project for creating System.Data.dll Assembly!nfo.cs or services for Windows. The System.ServiceProcess.dll Assemblyinfo.vb source code file added has System.XML.dll Project File: csproj or vbproj a class that inherits from Visual Studio Solution: Sln System.ServiceProcess.• Visual Studio Project User Service Base. Options: csproj. user or vbproj.user Source Code File: vb orcs Resource File: resx Solution User Options: . suo

Project File Types Explained Table A-2 explains a few file types that are associated with VS.NET 2003. The most important files are code files, Solution File, and the project files generated by the wizards. APPENDIX A PROJECT FILES 495

TableA-2. File Types Serial Number File Type File Extension Description 1 Code File .vb or .cs Whenever a project is created in Visual Studio .NET, a code file is created in which the code is stored. Here are a few examples of what the code file could contain: WmdowsForm Class Module (Not inC#) Component Class User Control Custom Control Code File Inherited Form Web Custom Control Inherited User Control Windows Service COM Class Transactional Component Installer Class Web Form Web Service Web Custom Control 2 DataSet .xsd A file for creating an XML schema with DataSet classes. 3 XMLFile . xml XMLfiles. 4 XMLSchema .xsd Schema for XML documents. 5 HTMLPage .html An HTML page that can include client-side code. Even Frameset can be saved as an HTML file. 6 Text File .txt Similar to creating a text file from Notepad . 7 XSLTFile . xslt A file used to transform XML documents. 8 StyleSheet .css A cascading style sheet used for rich HTML style definitions. 9 Crystal Report .rpt Visual Studio .NET is integrated into Crystal Reports and provides a designer to help in the creation of a Crystal Report file that publishes data to a Windows or Web form. 10 Bitmap File .bmp Similar to creating a Bitmap file from MSPaint. 11 Cursor File .cur Wm32 cursor file. 12 Icon File .ico Wm32 icon file. 13 Assembly .resx These are Resource files that are used in the application.

Continued 496 APPENDIX A PROJECT FILES

TableA-2. File Types (continued) Serial Number File Type File Extension Description 14 Assembly .vb or .cs This is the other rue that Information File is created with all types of projects under Visual Studio.NET. These files contain attributes that control general information about an assembly. Attributes added by default to the C# or VB Project differ. The important thing to note is that this file can contain the Key File attribute, which is used to add files to the GAC. A few examples or these attributes follow. Though the default Assembly Information files created for VB and C# differ, you always have the option of adding these attributes yourself. Here are few of these attributes to give you an idea of the possibilities: C# [assembly: AssemblyTitle("")] [assembly: AssemblyVersion("l.O. *")] [assembly: AssemblyKeyFile(""~l [assembly: AssemblyKeyName("" ] VB 15 Application .config Prior to configuration, Configuration File we had INI files (or the registry) to change the settings of Applications. .NET now provides a standard way for changing these setting options. The file also contains other options and has standard tags to reduce the number of lines of code and promote ease of maintenance . 16 JScript File . js A script file containing I Script code. 17 VBScript File .vbs A script rue containingVBScript code 18 Windows .wsf A file containing script that Script Host is run as a Windows program. 19 Web Forms .aspx ASPX files are ASP. NET files that are created for web applications. With previous versions, the ASP file extension was . asp. With ASP.NET the code and presentation are separated; the code is stored in the VB or CS file, while the ASPX file contains the presentation, i.e., HTML or server controls. 20 Web Service .asmx These files hold the web service code. But with the creation of a web service from VS.NET 2003, these files usually contain a single file, which points to the code behind the file, which contains the actual code. APPENDIX A • PROJECT FILES 497

TableA-2. File Types (continued) Serial Number File Type File Extension Description 21 User Controls for .ascx FileNames web applications with an . ascx extension contain user controls that can be web applications, which could be one of the following: Web User Control Mobile Web User Control 22 Static Discovery .disco Discovery Files are for File disco locating and interrogating the web service. A Discovery file is an XML file with the . disco extension. The DISCO file is not automatically created for an XML web service. For creating a discovery file, refer to http://msdn.Microsoft.com. 23 Global .a sax For a Global Application Application Class Class, also called an ASP.NET application file. In this flle code is written to handle application-level events for ASP.NET applications. The class file inherits from System.Web.HttpApplication when you open the file in visual Studio.NET 2003, you will find a lot of events already added: Application_Start Session_ Start Application_BeginRequest Application_EndRequest Application_AuthenticateRequest Application_Error Session_End Application_End 24 Solution File .sln A solution is a combination of one or more projects. It contains reference information about the projects that were added, and the path under which they can be located. It stores information about the project flle . vbproj or . csproj. It also stores information about Debug and Release. Since all the files generated by VS.NET 2003 are simple text files, it's possible to open the solution me in Notepad.

Continued 498 APPENDIX A PROJECT FILES

TableA-2. File Types (continued) Serial Number File Type File Extension Description 25 Project file .vbproj or Similar to a Solution .csproj file, a Project file contains information about the particular project and can be opened in Notepad for access to more information. A Project file is an XML file, and for a C# project, the project file has a tag with CSHARP, and for a VB project, a tag with VisualBasic. A project is a combination or one or more files, and for each file added, an XML tag is added to the project file. You will also find a References tag, which has all the references that were added to your project the last time you saved your project file. 26 VISual Studio Project . csproj . user or As the name suggests, these flies store User Options .vbproj.user information about the IDE settings that a user might have made. A User Options flle is an XML flle, and for a C# project the project file has a tag with CSHARP, and for a VB Project, a tag with VisualBasic. To explore more, open the Visual Studio Project User Options flle in Notepad. When you right-click on the project in the Solution Explorer and select Properties from the context menu, a dialog box is shown. All the settings that you see here are stored in the User Options file. To see this in action, add a reference path and then save the solution; opening the user options flle would not show you the reference path you added . 27 Weblnfo File .csproj.webinfO or This is an XML file and URL Path of .vbproj.webinfo the Web tag that points to the virtual application root. These flle are created only for ASP.NET applications. 28 Solution .suo Solution User Options flle User Options is hidden by default; to view them in the Windows Explorer, select Folder Options from the Tools menu; select the View tab; then check the radio button labeled Show Hidden Files and Folders. These files store the options that you might have selected for your solutions; they also include the customizations made by you. 29 Program database .pdb Program Database flies holds debug- ging and project state information. APPENDIX B

Visual Studio .NET Directory Structure

Installation Directories With the original release ofVisual Studio .NET, chose the rather inflexible directory name of . NET to use as the default installation location, leading to a full default path of: (:\Program Files\Microsoft Visual Studio .NET

With the release ofVisual Studio .NET 2003, this has been amended slightly to include the version number, giving a default installation path of (:\Program Files\Microsoft Visual Studio .NET 2003

Numerous other directories will be created as part of the installation to contain documenta• tion, runtime resources, and so on. This directory contains the key Visual Studio-specific files, though: the IDE executable, further tools, the language compilers, settings, templates, sample graphics, and so on.

Language Directories For each .NET language such as C#, VB.NET, and J#, a directory exists within the root installa• tion path. If a full installation is performed, the following directories will exist:

• Vb7: Visual Basic .NET

• Vc7: Visual C++ (both .NET and unmanaged releases)

• VC#:C#

• VJ#:J#

499 500 APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE

As additional languages are installed, it's safe to assume that if they originate from Microsoft, they will continue to be installed in this location, as J# was when originally released as an addi• tion to Visual Studio .NET. However, it is not a given that languages from third-party suppliers will be installed in this directory. Within each of these directories there exist subdirectories that contain all of the templates available for that language: project templates, designer templates, file templates, and wizards. In the case ofVB.NET, there are some coding samples, too.

Tools There are numerous tools included with Visual Studio .NET, again all contained within subdi• rectories of the installation. Many of these, and reams of associated documentation, are found in the Framework SDK contained in the SDK directory. Any further SDKs that have been installed can be found in the Visual Studio SDKs subdirectory. The only two that come with Visual Studio are VS Analyzer, and DIA (to parse PDB debug-information files). It can be assumed that further SDKs will be installed in this directory as they become available. Additional utilities that were previously found in the platform SDK and Resource Kits, such as the Generate Guid tool found on the Tools menu in Visual Studio .NET, are located in the Common7\ Tools directory.

MSDE In the previous version ofVisual Studio .NET, MSDE (the Microsoft Data Engine, a cut-down version of SQL Server) was included in certain versions of the distribution. It could be found in the Setup\MSDE subdirectory of the root installation directory. With this release, Microsoft has removed MSDE from the installation, and a ReadMe file now exists in that folder, redirecting the user to the following link for downloading MSDE:

http://go.microsoft.com/fwlink/?linkid=13962

Graphics In the Common7\Graphics subfolder a selection of bitmap and metafile images, icons, cursors, and videos can be found. These are provided to be used in the applications created using Visual Studio, and can save a great deal of development time. While the icons may now appear outdated due to their being limited to 16 colors and small sizes, several useful standard Windows anima• tions for file operations can be found here.

Templates Whenever a new solution or new project is created in Visual Studio, or a new item is added to an existing project, these items are based on templates stored within the installation directory. These can be broken down into two categories:

• Template directories: Template directories contain entries for individual items that can be created, such as text files, XSD schemas, and ASPX pages. These are largely found in the directories Common7\IDE\NewFileitems and Common7\IDE\New5criptltems. Additional items such as blank-solution templates can be found, too, in directories such as Solu• tionTemplates and MacroProjects. APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE 501

• Enterprise templates: These templates are present in the two Enterprise editions ofVisual Studio .NET 2003 (Enterprise Developer edition and Enterprise Architect edition), allowing software architects to base the design of applications on what is to be accomplished, freeing them from having to focus on the more detailed implementation aspects. Other than certain language-specific wizard files, all Enterprise Template files are located within an Enterprise Frameworks subdirectory of the main installation location.

Interoperability One final directory related to Visual Studio .NET, but existing out of the root Visual Studio folder, is as follows: (:\Program Files\Microsoft.NET\Primary Interop Assemblies

This directory contains interoperability class libraries for some of the most common COM libraries that Microsoft has provided in the past, such as ADO DB and MSHTML. These libraries have been developed with .NET developers in mind, to ensure that managed code can inter• operate correctly with the functionality they provide. Further Primary lnterop Assemblies are available for other applications, such as Microsoft Office XP, and are freely available for down• load from MSDN.

Project Directories Further directories that are related to Visual Studio rather than the .NET Framework and runtime itself are those created by individual projects, and the compilers that act on them. For all code-related projects, irrespective of whether they produce a DLL or an executable as an output, the compiled binary files will be written within (a subdirectory of) a directory named "bin'' (short for "binary") under the root of the project. In the case of web projects (both Web Services and Web Forms projects), the DLL and debug files will reside directly in this "bin'' directory. In the case of other project types, subdirectories named "Debug" and "Release" will contain the output files, depending on the Solution Config• uration specified within Visual Studio .NET. As further Solution Configurations are added to these project types, further subdirectories will be created to contain their output. In addition to the output of the project itself, local copies of the output from all referenced projects will also be copied here by default. This can be changed by altering the value of the Copy Local prop• erty of each reference within Visual Studio. Another difference between Web-based projects and class-library/executable projects is the creation of the "obj" (short for "object") directory. This acts as a working folder during compi• lation, containing all of the embedded resources, debug information, and so on that is to be compiled into the primary project output. 502 APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE

.NET Framework Directories In addition to the directories that are created on a user's system for Visual Studio .NET, the underlying technology-the .NET Framework-has its own locations for storing files. There aren't as many of these as there are for Visual Studio, but they contain all that is needed to compile .NET solutions, albeit from a command-line environment, rather than a GUI. They also contain a multitude of applications, such as the ASP.NET worker process and ISAPI filter in addition to the Dll.s that constitute the Framework classes. All these are vital for .NET applications to run.

Framework Versions The main Framework files are all stored in the following location: %SystemRoot%\Microsoft.NET\Framework

By default, %SystemRoot% will be C: \Winnt with server and professional editions ofWmdows up to Windows 2000, and C: \Windows with other versions such as Windows Server 2003 and Windows XP Professional. This directory contains all of the versions of the .NET Framework that have been installed on the local machine, each stored in a separate directory. The name of this directory is the version number, such as vl.0.3705 or vl.l.4322 (as in the case of the Framework vl.l release that comes with Visual Studio .NET 2003). Within each of these, a single version ofthe Frame• work is stored with all the necessary DLLs, tools, and configuration files, several of the most important files being the following: • esc. exe: The C# compiler that can not only be used as a stand-alone compiler to compile projects. Other compilers such as vbc.exe and jsc.exe (forVB.NET and J#, respectively) are also located here, along with associated configuration files, esc. exe. config, for instance. The other tools that are required to compile .NET projects are installed in this directory, too: the assembly linker (al. ex e), the Intermediate Language Assembler (.exe), and so on.

• Installutil. exe: This utility can be used to install .NET applications (such as Windows Services) from the command line, without the need for an MSI-based graphical installer.

• aspnet_ regiis. exe: This is the tool that registers ASP. NET with liS, a task that sometimes fails when Visual Studio .NET is installed on a system.

• aspnet _state. exe: This is the ASP. NET state service that allows Session information to be stored out-of-process and shared in a web-farm.

Other files found here include the SQL Scripts to install the SQL-Server ASP.NET Session State functionality. The subdirectories within each version of the framework are as follows:

• CONFIG: The most important file in this directory is the machine. con fig file, which stores the default settings that are overridden by individual applications. Another impor• tant file in this directory is Defaul tWsdlHelpGenerator. aspx. It is this file that creates the WSDL help for web services. This can be amended in order to rebrand it or amend func• tionality, allowing restrictions to be made on the use of the features it provides. Further APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE 503

files in this directory define differing levels of security. These include web_ notrust. config, and web_ hightrust. config.

• Temporary ASP.NET Files: This directory contains the compiled versions of ASPX, ASCX, and other file types that are compiled at runtime, rather than as part of the build process within Visual Studio .NET. On rare occasions, the versions in this directory can get out of sync (such as when the files become locked), causing application errors. If this is the case, deleting the files in these directories will cause ASP. NET to recompile them, without raising any errors.

• ASP.NETClientFiles: This directory contains the WebUIValidation. j s file, among others. It is this file that provides the mechanism for processing validation controls on the client side. It should be noted that the copies of the files found in these directories are not the ones executed. Those are detailed later in this appendix.

The Global Assembly Cache The Global Assembly Cache (GAC) stores .NET assemblies that have been specifically desig• nated to be shared across multiple applications on a single machine. This directory can be found in the %SystemRoot%\assembly location. The files it contains are not only those created by application developers, but also assemblies such as System. Web. dll that constitute the Framework classes themselves. When Visual Studio .NET is installed, Explorer is updated via a Shell extension so that browsing to this directory will display a customized view, as can be seen in Figure B-1.

Globd Asseni>ly Name _, ---'Type.:___ VOfslon C,.._e N>k Key Tolt.on ...,:, aim95 1.0.5000.0 bO:lf517hld50a3a Ai>PPatc~ 1.0.3300.0 b03f5l7f 11d50a3a asse

Figure B-1. GAC contents within Windows Explorer 504 APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE

The information displayed lets you see not only what assemblies are installed for use by your application, but also what versions are available. The two entries highlighted in the figure are different versions of the System.Web DLL, one of which was installed as part ofvl.O of the Framework, another as part ofvl.l. The directory structure of the assembly and its child entry Download shown in the tree-view to the left of the screenshot in the figure don't actually represent the directories that are present on the machine. The shell extension is hiding the true structure stored here. If we open a command prompt, we can see the true picture, as shown in Figure B-2.

Figure B-2. Command window listing of the GAG

The first command executed, dir, shows us that five directories are present:

• Temp and tmp: These directories contain temporary files when they are needed by the runtime, but for the most part remain empty.

• GAC: The GAC directory contains each assembly and assembly version registered with the global assembly cache in intermediate language (IL) format.

• Nativeimages: Each of the Nati veimages directories contains an assembly that, rather than being in IL, is compiled into native code for the processor of the machine. Once this has been done, the Native Image for an assembly is automatically used, improving performance, rather than all versions being probed. User-written assemblies can be converted into native images using the Ngen. exe utility provided with the framework.

The second command, tree, shows the structure within each of those directories. The pattern followed by the Nati veimages directories is the same as that for the GAC directory, with each assembly name having its own subdirectory, each of which contains a further directory for APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE 505 each version of the assembly (this is suffixed by the Public Key Token for that assembly). It is in each of these bottom-level directories that the DLLs themselves are located, along with an INI file that gives details such as the DisplayName of the assembly (see Figure B-3).

Figure B-3. Command window directory listing ofa GAC entry

If you want to view the actual files from within Explorer, the shell extension can be disabled/ deleted by renaming/ deleting the flle Desktop. ini, which resides in the Assembly directory. Since this file is hidden, it will not normally be listed, even with a Dir command. ASP.NET Directories In addition to the directories already discussed, there are several related to ASP.NET that are maintained both by the .NET runtime and by Visual Studio .NET. These can be split into two distinct types of directories, caches and support directories:

• Caches: These directories contain copies of applications being developed within Visual Studio .NET and compiled versions of ASP. NET pages and controls such as ASPX and ASCX: files to be used by the runtime.

• Support directories: These contain extra information that is needed in order to provide the functionality of ASP. NET, such as the aspnet _client directory.

Temporary ASP.NET Files When an initial request is made to a directory containingASP.NET files such as those withASPX and ASMX extensions, they are compiled to a library assembly by the ASP.NET ISAPI filter (aspnet_isapi.dll). These assemblies are then placed in the directory:

C:\Windows\Microsoft.NET\Framework\\Temporary ASP.NET Files where they are executed each time a subsequent request for the page is made. Within this directory, a separate directory is created for each virtual directory within IIS. Temporary names are used for subdirectories and DLL names, meaning that an application you create in a virtual directory named myApp would end up with an assembly in a location such as ... \Temporary ASP.NET Files\myApp\Ocb50439\ae6e6bf9\hgpadoff.dll

The pseudorandom names for the files and directories are a hash of the original applica• tion/ class names. Whenever the original source file is modified, the runtime recompiles it, 506 APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE

maintaining this filename and replacing the existing assembly. If these DLLs are opened with ILDASM (the Intermediate Language disassembler), the original class names can be seen within them. In addition to the Temporary ASP. NET Files directory, web services also make use of the system Temp directory, found by default at C: \Winnt\ Temp in Windows 2000 and C: \Windows\ Temp in later versions, where temporary files and classes are written to. If ASP.NET applications are being run on a machine that is a domain controller, then the worker process will run as a domain account as default, potentially requiring permissions to be changed. The Temporary ASP. NET Files and C: \Windows\ Temp directories should both have write permissions enabled for the ASP.NET user defined in machine. config.

VSWebCache The VSWebCache directory is, as its name suggests, used by Visual Studio .NET for caching web application data. By default, this directory is found at the following location:

(:\Documents and Settings\\VSWebCache

Within it, a directory is created for each web server (such as the local machine) on which web applications are being developed. These in turn each contain copies of the web projects being developed within Visual Studio, replicating the structure of liS. These directories are maintained in order that work can be carried out on web applications even when the devel• oper isn't connected to the web server. The contents of the directory are synchronized from within the Web Project submenu of the Project menu within Visual Studio (Figure B-4).

~ :.:1 Add Web E.orm... ..J Add Web User Control ... .!l Add t!TML Pa\je ... ·~ Add Web SerJ:jce .. . 1@) Add Compoaent .•. ..., Add !:,lass ... d AddNe!:>!Item ... Ctri+Shift+A 2:] Add Existing Item ... Shift+Ait+A

~ NewFol!ier 4iJ Copy Project .. . We\2 Project ~

...)) ShQW All Files Work Of.fline Unload Project Syndvonize Folder - Add &eference ... Synchronize ~II Folders

Figure B-4. The Project menu within Visual Studio

Whenever one of the bottom three options is selected, the version of the application cached locally is synchronized with that maintained on the web server. If the local machine is being used as a web server, this means that two copies of the site will exist on it. APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE 507 aspnet_client The aspnet_ client directory exists within C: \inetpub\wwwroot. It contains the client-side JavaScript files used by ASP. NET to provide functionality for SmartNav and client-side form validation. SmartNav is used to improve the user experience on Internet Explorer v5.5 and above by performing the following operations:

• Eliminating the page-flash caused by navigation

• Persisting the scroll position when moving from page to page

• Persisting element focus between page navigations

• Retaining only the last page state in the browser's history

The individual script files are found within a subdirectory of the aspnet_client directory. In the case of the Framework version included with Visual Studio .NET 2003, the default loca• tion for these files is

C:\inetpub\wwwroot\aspnet_client\system_web\1_1_4322

In order to make use of these scripts, a virtual directory must be added to the root of each website (not virtual directory) in liS that points to this directory; Visual Studio .NET does not create this entry for us.

FrontPage Extensions Although the FrontPage Extensions directories aren't technically necessary for either ASP.NET or Visual Studio .NET to function, they are created as part of web projects as a means of publishing the files that constitute web applications to servers. The fact that they are named after Front• Page should not lead to their being associated with the web-design package that is part of Microsoft Office; they are a completely separate technology and are so named due to their original purpose of maintaining web servers and synchronizing files on them from within FrontPage. These extensions now form one of the two main methods of accessing and updating files within Visual Studio .NET. The main benefit that they provide is that they work not only on the local machine, or even servers that are accessible through a IAN, but also on remote web servers over the Internet, making the location of the server transparent. Conversely, File Share mode (the other method of accessing files from within Visual Studio) works only with local machines: those that are contactable via UNC paths. The main advantage of File Share mode is that it allows for Visual Source Safe integration, which FrontPage Extensions do not. The following directories are those created by the extensions. Not all of them are created at every level of the directory hierarchy within web applications, but all are created as hidden items:

• private

• vti_cnf

• vti_log

• vti_pvt 508 APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE

• vti_script

• vti_txt

If the File Share method is used for accessing a web project, the directories created to support FrontPage Extensions can be safely removed, making for a tidier directory structure within a project.

Special Directories In addition to the directories that are used by Visual Studio .NET itself and system directories that are necessary for the runtime to function correctly, there are further Special Directories that can be referenced for 1/0 purposes during development and as part of Setup and Deploy• ment Projects. Such directories represent predefined Windows directories, such as Program Files. The physical location of these directories can vary from one computer to another, possibly being located on a different drive, or having a different name; for example, the Windows direc• tory itself could be located at C: \Windows on one computer, D: \Windows on another, or C: \Winnt on a third. There are numerous special directories available to a developer in Visual Studio .NET:

• Application Directory: An application directory under the Program Files directory. TypicallyC:\Program Files\Company Name\App Name.

• Common Files Directory: A directory for components that are shared across applica• tions. Typically C: \Program Files \Common Files.

• Custom Directory: A directory that you create on a target computer, or a predefined Windows directory that is not a special directory. Defaults to same location as the Application directory.

• Fonts Directory: A directory containing fonts. Typically C: \Windows\ Fonts.

• Module Retargetable Directory: A custom directory that allows you to specify an alternative location for a merge module in a setup and deployment project.

• Program Files Directory: The root node for program files. Typically C: \Program Files.

• System Directory: The Windows System directory for shared system files. Typically C:\Windows\System32.

• User's Application Data Directory: A directory that serves as a repository for application-specific data on a per-user basis. Typically C: \Documents and Settings\username\Application Data.

• User's Desktop: A directory that contains files and directories that appear on the desktop on a per-user basis. Typically C: \Documents and Settings \username\Desktop.

• User's Favorites Directory: A directory that serves as a repository for the user's favorite items. Typically C: \Documents and Settings \username\Favori tes.

• User's Personal Data Directory: A directory that serves as a per-user repository for documents. JYpically C: \Documents and Settings \username\My Documents APPENDIX B VISUAL STUDIO .NET DIRECTORY STRUCTURE 509

• User's Programs Menu: A directory that contains a user's program groups. Typically (:\Documents and Settings\username\Start Menu\Programs.

• User's Send To Menu: A directory that contains a user's Send To menu items. Typically (:\Documents and Settings\username\SendTo.

• User's Start Menu: A directory that contains a user's Start menu items. Typically (:\Documents and Settings\username\Start Menu.

• User's Template Directory: A directory that contains document templates on a per• user basis. Typically C: \Documents and Settings \username\ Templates.

• Wmdows Directory: Wmdows or system root directory. Typically C: \Windows or C: \WinNT.

• Web Custom Directory: A custom directory on a web server, identified by an HTTP address.

Unlike most I/0 functions in .NET, access to these directories is available through the System. Environment class, rather than System. IO, since these values are platform-specific (and hence may not be available on mobile platforms and other ports of the .NET Framework). The individual directories are available through a call to the GetFolderPath method, passing in a value from the SpecialDirectories enumeration, as in the following example:

Dim specialDir As System.Environment.SpecialDirectory = Environment.SpecialDirectory.StartMenu Dim path As String = System.Environment.GetFolderPath(specialDir)

This enumeration also includes extra values for locations such as My Computer, which, although not a physical directory, is a logical file-system location. As previously mentioned, these locations can also be used in Setup and Deployment proj• ects, being the target directories for the application data installed (see Figure B-5).

Add SQOCiol fdde, • ,_FJos fdde, Name 1\11>0 fdde, "~ § :User's~op~fdde, font$ fdde, ~~fdde,User's Oesl<.top fdde, User's Proorams Menu el'oor"" FJos Fdde< li:JUser"s Proor""' Menu fdde, SIGflemFdder User's A!>Pication Data Folder

UW's F~as Fdder UW's PO{$OMI Data Fdder

User's s.-d To Menu User's :;,tart Menu

User's St~ Fdder User's l0111liote Fdder l!l)1dows Folder

Gob<~ Aswrtlly Cache Folder - CljSlomFdder

Figure B-5. Special folders in Setup and Deployment projects APPENDIX C

Certificat· on

Since you are reading this book, I will assume that you have more than a passing interest in Microsoft's .NET technology. If, like me, you have found that .NET offers you a powerful yet enjoyable environment in which to solve your programming problems, then you will no doubt want to start putting it to use in your day-to-day work. There may be others of you who are searching out new employment options and would relish the opportunity to work with the .NET technology. Regardless of whether you are trying to convince your existing employer to let you loose on .NET or demonstrate the breadth of your .NET knowledge to a prospective employer, having some kind of proof of your skills is going to come in useful. That's where certification comes in. During this appendix we are going to take a look at the various options available that are related to the world of .NET programming. Specifically, we are going to start with a look at what certification levels Microsoft is offering, before focusing specifically on those that are related to development. While Microsoft would like to think they are the only vendor on the planet, our clients/ employers don't often think that way. Since we can't develop our .NET applications in isolation from the rest of the computing community, I close this appendix with a look at some certification options available from other vendors that you might find useful for boosting your resume.

Overview of Microsoft Certification Unless you have been living on the Moon for the past five years, you will no doubt be familiar with the wide range of certification options available from Microsoft. Covering almost all aspects of the desktop and server platforms as well as development tools, Microsoft Certification is a must for all developers wanting to improve their resumes. This appendix aims to provide you with a full overview of the certification options available and give you a roadmap for planning your certification campaign.

Certification Process Currently, all Microsoft certifications are awarded based on the results of a set of examinations. Unlike Sun and Oracle, Microsoft certification does not require you to participate in any prac• tical examinations or write any long essays. The only exception to this rule is the Microsoft Certified Trainer track, which requires you to demonstrate that you have good instructional and presentation skills.

511 512 APPENDIX C CERTIFICATION

Each certification level has a requirement on the number of exams you must pass, and the exams offered for each level are usually restricted to a subset of the full exam library. Once you have passed an exam, you can use it to count toward multiple certification levels, provided that the exam is included in that level's exam track. This means that if you pass exam 70-315, Devel• oping and Implementing Web Applications with Microsoft Visual C#™ .NET and Microsoft Visual Studio .NET, to get your Microsoft Certified Professional (MCP) certificate, then you are already equipped with one of the exams needed to acquire the Microsoft Certified Application Developer (MCAD) certificate. In this way, it is possible to progress gradually through the certification levels to your desired level, while minimizing the number of exams you will need to take.

Certification Tracks There are currently ten different certification tracks on offer from Microsoft:

• Microsoft Certified Professional (MCP): This is the certification you will almost defi• nitely obtain first. You can obtain this certification by demonstrating proficiency in a single Microsoft product. In practice, this means that if you pass any (or almost any!) of the available exams, you will be awarded the MCP certification.

• Microsoft Certified Desktop Support Technician (MSDST): This certification has just become available as I write this. This certification level is aimed at help-desk staff and requires the successful completion of two exams aimed at providing support on both the Windows operating system and applications running on it. As with most certifica• tion exams, either of these exams can be taken to obtain MCP status. I cannot speak with any experience on this certification, since it will be a cold day in hell before you fmd me on a help desk!

• Microsoft Certified Systems Administrator (MCSA): This certification is aimed at anyone whose job involves the running and maintenance of a Wmdows-based network environment. Currently there are two versions of this certification available, one for the Windows 2000 environment and one for Windows 2003. This certificate is looked at in more detail in the Non .NET Certification section.

• Microsoft Certified Systems Engineer (MCSE): The final step on the Microsoft track for all things infrastructure related. This certification is a natural progression from the MCSA certificate and also comes in Windows 2000 and Windows 2003 flavors. More coverage of this track can be found later in the appendix.

• Microsoft Certified Database Administrator (MCDBA): This track involves a mixture of exams; as well testing your skills on database administration, you will take exams focusing on network and server OS administration as well as database design and implementation.

• Microsoft Certified Trainer (MCT): This track requires that you have already obtained MCSE, MCSD, or MCDBA, and further requires that you have attended a specific course about Microsoft Learning and that you demonstrate practical presentation ability. Obtaining this certificate will enable you to teach any of the courses in the offi• cial Microsoft Curriculum. APPENDIX C CERTIFICATION 513

• Microsoft Certified Application Developer (MCAD): Most likely the next step after MCP for developers, the MCAD track requires that you pass three examinations to demonstrate your proficiency with a .NET language, Visual Studio, XML and Server Components, and at least one of the Microsoft server products such as SQL Server or BizTalk. This track is covered in more detail later in the appendix.

• Microsoft Certified Solutions Developer (MCSD): This is the final developer-oriented track available through Microsoft. Building on the foundations of the MCAD certifica• tion, MCSD requires that you take an extra two exams on top of the three required to obtain MCAD. One of these exams serves to further demonstrate your proficiency with your chosen .NET language, and the final exam is the Solutions Architecture exam, which tests your knowledge and ability in various areas related to application architec• ture, project management, and requirements analysis.

• Microsoft Office Specialist: The Office Specialist track is currently available in three versions covering the 2000, XP, and 2003 versions of the Office products. Each track is available in three levels, and exams are available for most of the Office products. The details of this certification are outside the scope of this appendix, but you can find more details at the Microsoft Certification site at http: I lwww. microsoft. comltraincert.

• Microsoft Office Specialist Master Instructor: Currently available for the 2000 and XP versions of Microsoft Office, the Master Instructor certification requires that you gain the Office Specialist certification for every product in the suite. More details on this track can be found at the Microsoft Certification site.

Now that we have looked at all the available certification tracks, let's take a look at how the exams are structured, what kind of preparation is necessary, and what you can expect on the day of the exam.

Booking an Exam Before you can take an exam, you must register for it and book a slot at an approved testing center in your area. Exams can be booked through either VUE at http: I lwww. vue. com or Thomson Prometric at http: I lwww. prometric. com. I have used both of these providers, and there really isn't much difference. Besides, you will find that your choice of test center is important, and both VUE and Prometric tend to offer the same selection oftest centers. I know it sounds stupid, but try to pick a test center that is as close to where you are as possible. When I took my first Microsoft test, I was booked at a test center about 15 miles from where I live. I had picked this test center because it was the only one I knew of, and I had attended a course there previously. I arrived just on time for my exam after a particularly stressful one-hour drive through early morning traffic. During the exam my concentration was abysmal; I still don't know how I managed to pass. Since then I have discovered that there is a test center about 3 minutes walking distance from where I live. I'm sure you can guess where I took the rest of my tests. When booking your tests, be sure to give yourself enough time to prepare. I like to have at least three weeks before I have to take a test, giving me plenty of time to study and study some more. 514 APPENDIX C - CERTIFICATION

Preparing for a Microsoft Exam Preparation for the exam is split into two parts: what you do for the few weeks before the exam and what you do the night before the exam. During the weeks prior to the exam, you will want to try to do as much studying as you can manage effectively, where the focus is on effectively. You don't want to try and cram in a mammoth 8-hour study session, since your brain will no doubt shut down early on and you will just be wasting your time. I have found it effective to limit myself to a maximum of an hour a night leading up the exam, giving my brain just enough exercise without risking long• term damage. You should aim to plan your studying strategy in advance and then prepare all the mate• rials that you need. You will find a full breakdown of all the areas on which you are going to be tested at the Microsoft Certification website, and these areas should be the focus of your study. Everyone has different ways of studying. Some people like fancy flash cards or sticky notes all over the house. Others, like me, are content with just a good reference book (like this one!), a pen, and some paper. But one thing everyone needs is practice. If you are serious about passing your test, then you will want to obtain one or more practice tests that you can work through prior to taking the real thing. You can obtain practice tests from a variety of sources, each of which is discussed later in the appendix in the Exam Resources section.

•a A note on practice tests: One problem I find with practice tests is that I tend to remember which answers are right and which answers are wrong. This doesn't mean that I understand that question or even know what the answer is. I simply know that the correct answer to question 16 is A. In this case, you may want to take a break from your practice tests to try to forget which answers match which questions. You should also strive to understand why a correct answer is correct, not just that it is so.

The night before your exam you will probably want to do a small amount of review to recap the topics on the exam. If you stay up all night and still feel like you need a cram session that would make a university student weep, then good luck on the exam. You will need it. You should aim to get a decent night's sleep so that you are fresh and attentive during the exam. On the morning of the exam, the advice I can give you is make sure you are on time. You might want to consider getting to the test early, since you will probably be allowed to start early.

Taking the Exam The exam is computer-based, and once you have completed the exam, you will be notified immediately whether you have passed or failed. You don't receive a grade. You are simply told whether you passed or failed, and there are no grades included on your actual certificate. All the questions on the exam are multiple-choice, with some requiring just a single answer, while others require you to pick multiple correct answers. As you proceed through the exam, you can mark any questions you are unsure about, so that you can come back to them later on. There are no hard-and-fast rules on how to proceed during the exam, but I can offer the following advice: APPENDIX C CERTIFICATION 515

• Go through the test once quickly, answering all the questions you are comfortable with and leaving those that you aren't.

• Go through the test again, this time spending more time on the unanswered questions. Don't linger too long on any one question. Instead, mark it and move on.

• As you near the end of your time, if you have any questions unanswered, then guess. You don't get penalized for wrong answers, so you might be lucky with your guesses and get a few extra questions correct. Just remember when you are making your guesses to choose the answers that lean more toward the "Microsoft way."

Once you have finished, print your results and relax. It's over. If you passed, congratulations! If not, don't worry; your results will highlight which particular topics you did badly in, so that you can concentrate your efforts for the next time you take the test.

Microsoft Certified Professional Microsoft Certified Professional (MCP) is the first step along the certification path that many of you will take. The sheer number of exams available to gain this accreditation is overwhelming, with exams covering all facets of Microsoft-based computing. In this section we will look specifi• cally at the exam aimed at .NET developers, focusing on what skills you will be tested on and what level of experience is required for the exam.

What You Are Being Tested For With the MCP certificate, to say what exactly you are being tested for is at the same time a very easy and a very difficult question. It is very easy, because you are being tested for your knowl• edge in a single area of a single Microsoft product. It is very difficult to answer because of the massive number of options that are available. Gaining MCP is actually fairly simple for anyone who has more than two years of experience working with Microsoft Windows; choosing which exam to take, however, is a different matter!

Choosing Your Exam As I mentioned previously, there is a wide array of exams available for the MCP certificate, some of which, like the Windows XP exam, you could no doubt pass without any extra work. However, if like me, you are planning to obtain the MCAD certification, then you will no doubt want to plan ahead and take an exam that not only gains you the MCP accreditation but that will also count toward the MCAD certification as well. Fortunately, you don't have to be too clever with your planning at this stage, since any of the exams that count toward the MCAD accreditation will also give you MCP status. To this end, you should take whichever of the exams you feel more comfortable with, from those described in the Microsoft Certified Application Developer section. 516 APPENDIX C - CERTIFICATION

Microsoft Certified Application Developer The Microsoft Certified Application Developer (MCAD) certificate is a must for all .NET developers. From a career point of view, it provides a recognized way for you to prove that your skills in .NET are up to scratch. From a day-to-day programming point of view, you will almost certainly get some benefit out of working toward and gaining this certification. I found that during my preparations for the MCAD exams, my attention was more focused on topics that I used daily, and after a while, I found myself going to the MSDN library less and less to look up API references or class names. Finally, from a personal point of view, there is a great sense of achievement in gaining a certification in your chosen profession.

What You Are Being Tested For The MCAD certification tests whether you are capable of putting together a full application using .NET technologies. Passing any of the tests required to gain MCAD certification will give you MCP status, so you may want to consider starting off with one of the MCAD exams in order to gain your MCP status. If you gain MCP using a non-MCAD exam, you will need to pass four exams to gain both MCP and MCAD, whereas gaining MCP via an MCAD exam means that you require only three passes to obtain both accreditations. Some of the exams will expect you to select a language, either C# or VB.NET, in which to have the exam presented. For all exams you will be expected to have a good grasp of the syntax and nuances of that language. If you can't read C# code proficiently, then don't even consider taking a C# exam until you can. For those who have used .NET in their day-to-day work, obtaining the MCAD certification should be a cinch. For those who haven't, you face a slightly more difficult, yet entirely achiev• able, task.

Core Exams If you have looked at the MCAD exams on the Microsoft website (http: I /www.microsoft.com/ learning/mcp/mcad/requirements. asp) already, you will have noticed that there appear to be six exams to choose from for your core tests. While this is true in a purely literal sense, there are actually only three tests, each of which comes in C# and Visual Basic .NET versions. The C# and Visual Basic .NET versions of each exam are almost identical, a fact that may interest you when you come to pick your elective exams.

IINo You do not have to take the exams in the order they are discussed here. You are free to take the exams in whatever order you like. The order in which they are presented here just seemed logical to me (and it just happens to coincide with the order in which I took my exams!).

Choosing Your Core Exams You are required to select two exams from the core set, and you are restricted in which exams you may choose. For your first exam, you must select from one of the exams shown in Table C-1. APPENDIX C CERTIFICATION 517

Table C-1. MCP Core Exams Exam Number Exam Title 70-305 Developing and Implementing Web Applications with Microsoft Visual Basic® .NET and Microsoft Visual Studio® .NET 70-306 Developing and Implementing Windows-Based Applications with Microsoft Visual Basic .NET and Microsoft Visual Studio .NET 70-315 Developing and Implementing Web Applications with Microsoft Visual C#™ .NET and Microsoft Visual Studio .NET 70-316 Developing and Implementing Windows-Based Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET

As you can see, you basically have a choice of either Windows-based or Web-based appli• cations in your language of choice. Which exam you choose is entirely up to you, and your choice will probably reflect your day-to-day work or what you would like to be working on. For instance, most of my .NET experience has been with ASP.NET applications, so I opted to take the C# ASP. NET exam, since I already had a thorough grounding in what was required. I don't want to start regurgitating the content from the Microsoft Certification site, but I do want to address some of the core skills that each exam type will test you on.

Windows Exam Topics Without further ado, let's take a look at the core skills covered in the Windows-based exams:

• Creating User Services: The biggest portion of the questions on the exam fall under this topic. You will be tested on your ability to build the user interface of an application using ; this includes manipulating and instantiating controls, validating input, and handling errors. A few of the more advanced UI topics such as localization, accessibility, printing, and on-line help may also be tested, but the number of questions on these topics will be small. You should also be prepared to handle questions on working with a variety of business components, implemented using COM, .NET, Web Services, or native code.

• Creating and Managing .NET Assemblies: This topic covers the creation and manipula• tion of .NET assemblies. If you use Visual Studio .NET exclusively for your development, then you may be unfamiliar with some of the tools and concepts this topic tests. In order to be ready for this topic you should be comfortable using command-line tools to package up satellite and resource-only assemblies. You should also be comfortable creating Windows Controls and hosting them in Internet Explorer.

• Consuming and Manipulating Data: This is the part of the exam where you get tested on your ADO. NET knowledge. Specifically, you will be tested on your ability to interface with SQL Server using both ad hoc queries and stored procedures. You should be familiar with how ADO. NET is structured and with the major parts of the API. This topic also covers XML, so you should be familiar with the majority of classes in the System.Xml namespace and how XML is integrated with ADO.NET. Make sure you are comfortable with data-binding, since you are bound (get it?) to get a question or two on this. There will be quite a few questions on the exam pertaining to this topic, so you should make sure you are comfortable with it. 518 APPENDIX C- CERTIFICATION

• Testing and Debugging: Fairly self-explanatory, this objective covers your ability to test and debug your applications. Specifically, you should be comfortable with the debugger in Visual Studio .NET, including setting and managing breakpoints, including some of the more unused settings. On my exam I was tested on how you break only when a certain condition evaluates to true. You will almost certainly get tested on tracing, so you should be familiar with how the tracing architecture is structured and how to configure the tracing settings for your applications. Also, and quite unexpectedly, I was tested on writing a unit test plan, so you should be familiar with this. I warn you now: your idea of a unit test plan may, and probably will, differ from Microsoft's, so you should consider getting one of the study guides mentioned later in the appendix to familiarize yourself with the "Microsoft Way."

• Deploying a Windows-Based Application: You should expect to see a couple questions on this topic on your exam. You are expected to know quite a bit about deploying Windows Forms applications using a variety of mechanisms, such as removable media, network, and the Web. You will almost certainly see a question about Wmdows Installer, so you should at least be familiar with it and the various setup projects associated with it. The requirements from Microsoft state that you should be familiar with the Wmdows Logo Program, so you should at least familiarize yourself with what this involves. If you are not familiar with the Global Assembly Cache (GAC), then you need to learn about it for this exam.

• Maintaining and Supporting a Windows-Based Application: This is probably the smallest topic on the exam. All you will need to know for this part of the exam is how to diagnose and resolve faults with your software, and how to analyze and optimize the performance of your application.

• Configuring and Securing a Windows-Based Application: For this topic you will be tested on your knowledge of the .NET application configuration file format. Some of the questions will present you with various options for configuration data that look alike and ask you to choose the correct one, so you should be able to recognize when the configura• tion is wrong as well as when it is right. You will be tested in more depth on your ability to configure the security of your application, including configuring the different types of authentication as well as managing the users and roles of the application. Some of the questions pay specific attention to the effect of the ordering of the user and role manage• ment elements on the behavior of the application.

Web Application Exam Topics Now let's take a look at the topics covered by the Web Application exams. You will find that many of the skills overlap, especially in the areas that are not specific to your chosen environ• ment, but that's the benefit of having a core class library like .NET.

• Creating User Services: Most of the topics from the Wmdows exam such as data valida• tion, error handling, and localization are covered in the Web Application. Of course, the implementation of these features is specific to ASP.NET in this exam, so you should be comfortable using all these features in an ASP. NET environment. You should have a good grasp of ASP.NET Server Controls, User Controls, and the HTML controls, since these APPENDIX C CERTIFICATION 519

are covered extensively. Moreover, a wide range of the questions look at the intrinsic ASP.NET objects such as Request and Response, so you should be familiar with these as well.

• Creating and Managing .NET Assemblies: The only difference in this topic from the Windows exam is that instead of Windows Controls, you will be tested on Custom Controls and User Controls. You should be able to identify the differences between these two different types of control and also choose which type is appropriate for a given scenario.

• Consuming and Manipulating Data: Other than the differences in the data-binding mechanisms between ASP.NET and Wmdows Forms, the content for this topic will be the same as on the Windows exam.

• Testing and Debugging: This topic contains most of the content from the Windows exam, plus some extra content that is specific to ASP.NET. You should be familiar with the ASP.NET trace mechanism, including how to configure this for in-line and out-of• line viewing. You should make sure you know how to configure this at both the page and application levels.

• Deploying a Web Application: There isn't a great deal of difference between this topic on the Web Application exam and the corresponding topic on the Windows exam. Just make sure you are comfortable with the specific requirements of deploying to liS such as virtual directory configuration and that you are familiar with the differing require• ments of a Web garden, a Web farm, and a cluster.

• Maintaining and Supporting a Web Application: Almost identical to the Windows exam, the only difference is that you may be quizzed on performance analysis issues specific to the Web such as poor response time and timed-out requests.

• Configuring and Securing a Web Application: This topic differs greatly from the correspon• ding topic on the Windows exam. You will no doubt be tested on configuring your appli• cation within liS as well as configuration options that are available in the machine. config and web. con fig files. You will need a full understanding of all the authentication mech• anisms, especially forms authentication. Under this topic you will also find questions on configuring and implementing caching using both the Cache object and ASP. NET cache directives. As if this topic didn't have enough content already, you will also need to make sure you understand how to configure the different session management mechanisms and also how to configure various server services such as Frontpage Extensions. There will be quite a few questions relating to this topic on your exam, so you should be familiar with all the concepts mentioned.

You should now have more of an idea which exams best suit your situation and some kind of a starting point for your certification. With these exams you should find something that matches your day-to-day job, or at least the kind of job you are looking for. Then it can be quite easy to settle into getting ready for the exam, which is why I recommend that you take such an exam first. As I mentioned earlier, I started with the Web Application exam, and my familiarity really helped me settle into the certification process. Keep in mind also that passing one of these exams will give you MCP status if you don't already have it, so if you are 520 APPENDIX C • CERTIFICATION

looking for an MCP exam but thinking about moving onto MCAD later, you should really consider one of these exams as your starting point.

Second Core Exam Once you have passed your first core exam, it's straight onto the second and final core exam. For your second core exam, you have two "choices." See Table C-2.

Table C-2. MCAD Additional Core Exam Exam Number Exam Title 70-310 Developing XML Web Services and Server Components with Microsoft Visual Basic .NET and the Microsoft .NET Framework 70-320 Developing XML Web Services and Server Components with Microsoft Visual C# and the Microsoft .NET Framework

I'm sure you can see why I chose to put the word "choices" in quotation marks. For your second core exam, the only choice you get is the language you want the exam presented in. The topic ofXML Web Services and Server Components is fixed. Fortunately, this exam is quite interesting, and the topics covered are quite useful in day-to-day development, especially if your work involves server-based applications. Okay, let's have a look at the requirements for these exams, and then we'll move on to look at the options for your elective exam:

• Creating and Managing Microsoft Windows® Services, Serviced Components, .NET Remoting Objects, and XML Web Services: This is a rather broad topic, as indicated by the excessively lengthy title, and most of the questions on the exam come under this category. You will tested on your ability to create and control Windows Services and XML Web Services. You should be extremely competent with .NET Remoting, understanding both the server and client sides of the Remoting architecture as well as how to configure your remote objects both declaratively and programmatically. The questions on Remoting can be quite advanced, and expect to see questions on the various formatter I channel combinations as well as asynchronous methods and object activation and lifetimes. Also covered under this topic is the concept of Serviced Components. You will need an under• standing of what Serviced Components are and how they interact with COM+ services. You should be comfortable using the Component Services tool, as well as the various command-line tools needed for strong name creation and component registration. The exam will undoubtedly contain questions relating to security on some if not all of these different areas, and you should be aware of how security is implemented and managed in each context.

• Consuming and Manipulating Data: This topic builds on the foundation set by the corresponding topic in the Windows and Web Application exams. Specifically, you will need to be sure you fully understand how DataSet relationships work, and you undoubt• edly will find a few questions on XPath and the XmlReader classes; so make sure you know how they work. I also found on my exam that a few questions on the XML capa• bilities of SQL Server had crept in. In particular, you will need to be comfortable querying APPENDIX C CERTIFICATION 521

SQL Server for XML data and also with issuing an update command to SQL Server using XMLinput.

• Testing and Debugging: As with the previous topic, this topic builds on coverage of the Windows and Web Application tests. The additional areas covered under this exam are interactive debugging and testing, and debugging concepts specific to Web Services, Wrndows Services, and remote objects. You need to be familiar with how SOAP exceptions function and how to leverage SOAP exceptions to provide a mechanism for logging and debugging.

• Deploying Windows Services, Serviced Components, .NET Remoting Objects, and XML Web Services: For this topic, you will need to demonstrate a full understanding of deploying the four specialized components that are tested on this exam. You need to understand how an XML Web Service is deployed in liS and how to publish your XML Web Service in a UDDI repository. You need to understand how versioning works, espe• cially when Strong Names are used. You should be aware of how to redirect the .NET runtime assembly loader by specifying a binding policy. You will be tested on the various command line tools for installation and component registration, and some of the ques• tions are intentionally misleading, so make sure you are awake when you take the test. If you thought the questions on security configuration on your previous exam were difficult, then brace yourself, for this exam tests your knowledge of identity impersonation and integration of custom authentication schemes.

As you can see, some of the topics on this exam are quite advanced, certainly not things that many readers will be using in their day-to-day development. You will find, though, that if you give yourself plenty of time to study and prepare for this exam, then you should pass it quite comfortably. I found that I got the most out of working toward this particular exam, since it forced me to look in detail at topics I tended to face only once every three months. If you are looking to impress a potential employer with your knowledge, then you could do a lot worse than to study some of the topics covered on this exam.

Elective Exams When you get to this point you are almost there! All you have to do now is choose your elective exam. When choosing your elective exam you are faced with a small moral dilemma, due to Microsoft's somewhat lax certification requirements. For some reason, Microsoft permits you to take any of the core exams that you haven't already taken as your elective. At first glance, this doesn't seem like much of an issue, until you remember what I said about the similarity of the core exams. The Web Application exam in C# is almost identical to the Web Application exam in VB.NET, so identical, in fact, that you stand a good chance of getting almost all the same questions with just a difference in language. 522 APPENDIX C CERTIFICATION

I was alerted to this "dirty little secret" by a Microsoft Certified Trainer who was running a course on which I won a place. During the break on the first day we were sitting around discussing our intentions regarding certification when the trainer let us all in on this secret. It turned out that he and most of his colleagues had obtained their MCSD certifications this way!

Under the current Microsoft rules it is perfectly acceptable for you to take the C# Web Application exam as your core exam and then take the almost identical Visual Basic .NET Web Application exam as your elective. I know what you are thinking; surely, Microsoft can't be that stupid; alas, these are the people that gave us Clippy, the awful and extremely annoying Office mascot. This is not only acceptable, but there is even a little note on the MCAD requirements page on the Microsoft Certification indicating as much! Any of the exams you choose here will count toward the MSCD certification, either as an additional core exam or as your elective exam for that certification as well. The remaining elective exams available to you are shown in Table C-3.

Table C-3. MCAD Elective Exams Exam Number Exam Title 70-229 Designing and Implementing Databases with Microsoft SQL Server™ 2000 Enterprise Edition 70-230 Designing and Implementing Solutions with Microsoft BizTalk Server® 2000 Enterprise Edition 70-234 Designing and Implementing Solutions with Microsoft Commerce Server 2000

If you have a particular expertise in any of these products, you will undoubtedly want to take the exam in that product. I imagine that if you are reading this book, then you at least have a passing familiarity with SQL Server, so this may well be the choice for the majority of you. You should also note that if you plan to take the Microsoft Certified Database Administrator (MCDBA) certification at any point, then the 70-229 SQL Server exam will count toward that as well. Now let's take a look at what skills are covered in each of the three elective exams.

SQL Server 2000 Exam Topics As I mentioned earlier, the SQL Server 2000 exam may well be the one that the majority of you opt for. Out of all the .NET Enterprise Servers, SQL Server is the one you are most likely to have had a degree of real-world experience with. I actually took this exam as my elective due to my familiarity with SQL Server, and I found that familiarity helped me during my prepara• tion and during the exam. If you are currently looking for a job as a .NET programmer, then this exam is something of a safe bet. The chances are that your job will in some way involve using SQL Server, and showing your prospective employer that you have proven skills with the product may be the difference between getting the job or getting a letter in the post thanking you for your time. APPENDIX C CERTIFICATION 523

Okay, let's look at the skills you will be tested on:

• Developing a Logical Data Model: This section of the exam is all about database design. You will be tested on your understanding of concepts such as normalization and entity modeling. You should be familiar with normalization up to at least third normal form, and you should be comfortable defining entities and their attributes. This section tests your ability to identify keys and specify constraints such as FOREIGN and PRIMARY keys. You should also be comfortable specifying data types, dealing with CHECK and UNIQUE constraints, and managing nullability of data. You will get a couple of questions on the more theoretical aspects of database design, so you may want to bone up on all the theory.

• Implementing the Physical Database: In this section of the exam you will be tested on your ability to get down and dirty and actually build your database. You will need quite extensive experience with Data Definition Language (DDL) commands as well as a good understanding of the various concepts associated with implementing a data• base. You should have some knowledge of capacity planning and how this translates into DDL commands for building tables with specific allocations for both data and log size. You need to understand how SQL Server file growth works and how you can affect this behavior for your databases. Your DDL knowledge will be tested with questions on the creation of a wide variety of schema objects such as triggers, stored proce• dures, functions, and views. On my exam I had a few questions on indexes that tested not only my knowledge of the syntax, but also my understanding of where each partic• ular index type should or should not be employed. There is also no doubt that you will encounter a few questions on replication, so make sure you know the different types of replication available and when they are and aren't appropriate.

• Retrieving and Modifying Data: The core part of this section is coverage of Data Manipu• lation Language (DML). Most of you will use this as part of your regular programming experience, so it shouldn't pose too much of a problem. On top of run-of-the-mill DML, you will also be tested on SQL Server's XML support commands. I was tested on returning XML as the output from a query and also on executing an XPATH query as part of a larger SQL query. You should make sure you are familiar with some of the features that are less associated with .NET programming, such as linked servers, Bulk Insert, Data Trans• formation Services, and cursors.

• Programming Business Logic: This objective tests your ability to create and manage business logic using T-SQL. You will be tested on your knowledge of stored procedures, triggers, and user-defined functions. You should be comfortable within T-SQL constructs for error handling, flow control, and transaction management. You may see, as I did, a question or two on using Query Analyzer to debug your business logic.

• Tuning and Optimizing Data Access: I found this to be the hardest of the sections on the exam. This section tests your knowledge of various tools such as the SQL Profiler and the Index Thning Wizard. You should be familiar with how to set up and run a profile and then how to use the results in the Index Tuning Wizard. You may also find some questions on the behavior of specific settings within the profiler or on what information the pro filer must log in certain cases. You should also make sure you understand the different types of indexes, when they are appropriate, and how their use can affect data• base performance. 524 APPENDIX C CERTIFICATION

• Designing a Database Security Plan: For this part of the test you will be tested on your knowledge of Data Control Language (DCL) statements. You should fully understand how GRANT, REVOKE, and DENY apply in defining object security down to column level. You should be aware of the differences between managing security at user and role levels, and finally, there were two questions on my exam related to the use of appli• cation roles to secure your database. Specifically, you should be aware of how to create application roles as well as how to switch your current connection into an application role.

Now let's take a look at the BizTalk Server exam.

BizTalk Server Exam Topics While many of you may not be too familiar with BizTalk Server, there are a lot of applications that use BizTalk for integration and information sharing with other, potentially legacy, appli• cations. If you are looking for a job as a Systems Integrator or you are looking to work in some area of integration, then this exam would be ideally suited, since it covers skills directly related to your chosen line of work. The skills covered in this exam are as follows:

• Planning and Designing BizTalk Server Solutions: This is a big topic. You will be tested on a wide variety of different concepts from planning your security architecture including SQL Server security to planning your installation for differing levels of security, reliability, and scalability. You need to have some level of experience installing and configuring a BizTalk solution.

• Installing BizTalk Server: For this section of the exam you will be expected to demon• strate your ability not only to successfully install BizTalk Server but also to troubleshoot failed installations. This section not only tests knowledge of BizTalk installation and configuration but also your ability to install SQL Server and configure the underlying operating system.

• Building Document Interchanges: In this part of the exam you are tested on your ability to create and configure document interchanges using BizTalk Server. This involves spec• ifying the organizations and applications involved in the interchange as well as choosing and creating message envelopes in a variety of formats including EDI and XML. You should be able to create and configure inbound and outbound channels as well as a variety of receive scripts for receiving using FTP and Message Queuing.

• Creating Auxiliary Components for BizTalk Server Solutions: This section tests your ability to create custom transport logic, encapsulated as COM+ components.

• Administering BizTalk Server Solutions: This is quite a large part of the exam and involves many different facets of .NET Enterprise Server technology. You are expected to demonstrate an understanding of the various administration tools that make up a BizTalk installation, including Document Tracking and Activity, WMI, XLANG Event Monitor, and SQL Server Enterprise Manager. You should be able to diagnose any prob• lems related to a BizTalk installation including security issues at the OS level and errors with external services such as SQL Server and WebDAV. APPENDIX C CERTIFICATION 525

• Creating Schemas and Transfonnations: This section of the exam tests your knowledge of schema building and transformation definition. Specifically, you will be tested on your ability to import and modify schemas using the BizTalk Editor, as well on using the BizTalk Mapper to create schema mappings. You will also be tested on your ability to create schemas for flat files and to define XDR-based schemas for data in EDI format.

• Implementing Business Processes Using BizTalk Orchestration Designer: This section is quite involved. You are expected to demonstrate an understanding of how business processes are defined using BizTalk Flowchart shapes and how to bind your business process to concrete implementations using the Implementation shapes. You will be tested on your knowledge of building transactional business processes including both long- and short-lived processes.

Commerce Server Topics

• Analyzing Business Requirements: This section tests your ability to analyze a project and gather the appropriate requirements for use in defining a Commerce Server-based solution. You are tested on three main requirement types: architectural, integration, and functional. These types are further split into specific goals such as performance require• ments for architectural and catalog requirements for functional.

• Designing a Commerce Server Solution: In this section you will be tested on all aspects of Commerce Server design. You must demonstrate an ability to design user profiles, shopping and checkout strategies, and a Data Warehouse and reporting model. In addi• tion to this you will be tested on the design of an effective security framework along with deployment architectures for testing, staging, and production.

• Installing and Configuring CoiDJDerce Server 2000: This section is pretty much as the title implies: it tests your ability to install and configure an instance of Commerce Server. As part of this you are tested on your ability to install and configure both SQL Server and liS, as well as your ability to diagnose any installation-related errors.

• Developing a Commerce Server Solution: This is a large part of the exam. It tests your ability to actually develop a site using Commerce Server. You are tested on your ability to create profile definitions and campaigns as well as catalogs using Business Desk, XML, and the BizTalk API. You are also tested on your ability to customize the Business Desk and to create an analytics solution using the Data Warehouse.

• Deploying a Commerce Server Solution: This section focuses on the packaging and deployment of Commerce Server sites. Much of this section relates to diagnosing errors that occur during deployment, but special note is given to the configuration of SSL within the deployment environment.

• Maintaining and Supporting Your Commerce Server Solution: This part of the exam tests your ability to manage a Commerce Server site on an ongoing basis. This involves managing catalogs, profiles, content, and campaigns as well as the management of any orders that are made using your site. 526 APPENDIX C CERTIFICATION

Microsoft Certified Solutions Developer The Microsoft Certified Solutions Developer (MCSD) accreditation represents the pinnacle of Microsoft's certification track for developers. To obtain this certificate you need to pass a further two tests on top of those required to gain your MCAD certification. The intention of this certi• fication is to show that the holder is capable of designing and building applications in both the Wmdows and Web environments as well as being proficient in defining and communicating a robust application architecture. The actual requirements for this exam are four core exams and one elective, but two of your core exams and the elective are taken care of by your MCAD certification, so you are left with the remaining two core exams. For your first core exam you need to take the other platform exam that you didn't take for your MCAD. So if you took the Web Application exam, then you will need to take the Windows exam, and vice versa. For the remaining core exam you have one option, as shown in Table C-4.

Table C-4. MSCD Core Exam Exam Number Exam Title 70-300 Analyzing Requirements and Defining Microsoft .NET Solution Architectures

As the title implies, this exam is very much suited to architects and lead developers who have some level of experience working with clients to define and develop requirements and transforming these requirements into an effective architecture. I'd like to make a few comments at this point about this exam, since it is quite different from those we have discussed so far. First, this exam is a little more practical than the rest. It tests your decision-making abilities as well as your actual knowledge, so you will find that hands-on experience is very useful. Second, some of the topics on the exam are generally more suited to the role of a strategist or consultant. You should not be surprised to see a few questions on the exam talking about return on invest• ment or total cost of ownership; it is expected that you will take these factors into consideration with your solution. My third and final point is that your idea of solutions architecture, and certainly mine, might differ quite substantially from Microsoft's. Unless you are a solid practi• tioner of the Microsoft Solutions Framework (MSF), you will need to get yourself into Microsoft mode before the exam. You might find that having a special hat can help in this case!

Solution Architectures Exam Topics So, let's take a look at the skills that are covered in the Solution Architectures exam:

• Envisioning the Solution: This section of the exam is more oriented to analyzing feasi• bility and customer needs in specific areas than to any actual technical architecture. You should expect to see a few questions on risk management and also to be tested on your ability to match the concept and requirements of a project to the available resource/skill set.

• Gathering and Analyzing Business Requirements: This section covers what is gener• ally the first appendix in any book on software architecture. You will expected to look at both functional and nonfunctional requirements during this section and demonstrate your ability to understand, document, and communicate a variety of business needs. APPENDIX C CERTIFICATION 527

You should expect to see questions that are decidedly nontechnical in nature, such as those that address the requirements for training and staffing as well as those that expect you to assess a solutions position in the marketplace. You should be familiar with common concepts such as use cases, data modeling, and process management. This is probably the largest section on the exam.

• Developing Specifications: In this area you will be tested on your ability to transform a set ofrequirements into a working specification, paying particular attention to nonfunctional requirements such as security, operations, and infrastructure. This section includes questions on building a test plan that are more difficult and involved than those on the MCAD exams. Finally, for this section you might see a few questions on creating a training plan for the users of your solution.

• Creating the Conceptual Design: For this section of the exam you will be expected to demonstrate a good understanding of defining the conceptual model of your solution. You should understand Object Role Modeling (ORM) concepts and how to identify and describe facts, attributes, and constraints for the entities in your model. A variety of different constraint types are covered. If you don't have any experience in this topic, then you will certainly need to start reading up, since these questions are among the most difficult on the exam.

• Creating the Logical Design: This topic is something that most of you will already be quite familiar with. You will be tested on your ability to define logical architectures for your solution, including considerations of security, maintainability, and performance. You should be familiar with Entity Relationship modeling, since you will be tested on building a logical data model, including the process of data normalization. You will need some knowledge of XML schemas, since you are expected to be able to define the schema(s) for your data model. You will undoubtedly get tested on your ability to provide validation of your logical model, both against the initial set of requirements and via a proof of concept.

• Creating the Physical Design: This is where it gets technical! In this section you will be quizzed on topics relating to deployment, user interface design, and physical data design, including index creation and backup strategies. Most of the topics in this section relate to defining how the solution will actually be built, so you should expect questions on how to physically interconnect application components, managing validation and error• handling, implementing security in a distributed environment, and infrastructure issues related to building high-availability solutions. As with the previous topic, you are expected to be able to validate your design against the original requirements and via a proof of concept.

• Creating Standards and Processes: In this section you will need to show that you can establish a variety of standards within your solution. In this case, the term "standards" refers to those standards employed for coding, user interface, documentation, source code control, and testing. You should demonstrate your ability to create and enforce processes for the development of your solution, including code reviews, issue tracking, and change management. A few of the questions relate to Visual Studio .NET Enterprise Templates and their relation to enforcing certain constraints on developers. 528 APPENDIX C CERTIFICATION

The Solutions Architecture exam is quite difficult, but if it were otherwise, then everyone would be an MCSD. More so than the other exams, this one requires a degree of actual experi• ence, but it's not completely impossible to pass this without any experience; you'll just need to study harder and longer. So with that we have concluded our look at the MCSD exam. You should now have a better grasp of what is required for this exam as well as good idea of which path you want to take. Now let's a look at a few of the other Microsoft certification levels that you might want to consider after you have passed your MCSD.

After MCSD So now that you are a fully fledged MCSD, what do you do next? Well, there are really three answers to that question:

• You can get some well-earned rest.

• You can work on some non-Microsoft certification (see the next section).

• You can work on some alternative Microsoft certification.

In this section we are going to look at the last option, specifically covering the MCDBA, MCSA, and MCSE certifications.

Microsoft Certified Database Administrator This certificate is a good choice after taking MCSD or MCAD, since you can use one of the Web Application or Wmdows core exams from your MCAD as your elective for this certificate. To make things even better, if you took the SQL Server exam as your elective exam for MCAD or MCSD, it counts as one of the core exams for this certification. This leaves you needing the final two core exams, one of which will count toward the MCSA and MCSE certification. So as you can see, this certification is the perfect bridge between the development track and the administra• tion track. Okay, so what other exams do you need? Well, for your first core exam you need to take the SQL Server Administration exam. This exam is available in both 7.0 and 2000 editions, although the 7.0 version is scheduled to be discontinued, and considering that a new version of SQL Server is on the horizon, the 2000 exam seems the sensible choice. See Table C-5.

Table C-5. MCDBA Core Exam Options Exam Number Exam Title 70-228 Installing, Configuring, and Administering Microsoft SQL Server 2000 Enterprise Edition 70-028 Administering Microsoft SQL Server 7.0

I'm not going to go into as much detail here about the exams as I did for MCAD and MCSD, other than to state the obvious: the SQL Server exams here are much more oriented to the role of database administrator than the SQL Server exam for the MCAD/MCSD track. There APPENDIX C CERTIFICATION 529 are many developers familiar with how to develop applications using SQL Server, but not as many are familiar with how to correctly configure and maintain a running SQL Server installation. You may want to start being nice to your DBA so you can tap him for information. Interest• ingly enough, the SQL Server 2000 exam counts as the elective for MCSA, so once you have completed this certification you are left needing just one more pass to get MCSA.

The full breakdown of the rest of the Microsoft exams described here can be found on the Microsoft Certification site at www. microsoft. com/traincert.

For the remaining core exam you have three choices, two of which (70-290 and 70-291) will count as a credit toward the MCSA and MCSE certifications. These exams are not really related to SQL Server, but rather they test your abilities to maintain the underlying operating system, in this case Wmdows Server, as part of the database's network environment. See Table C-6.

Table C-6. MCDBA Elective Exams Exam Number Exam Title 70-290 Managing and Maintaining a Microsoft Windows Server 2003 Environment 70-291 Implementing, Managing, and Maintaining a Microsoft Windows Server 2003 Network Infrastructure 70-215 Installing, Configuring, and Administering Microsoft Windows 2000 Server

For these exams, you will not find any questions relating to SQL Server itself. Instead, they are all related to the server operating system and the network environment. After all, what good is a perfectly configured database without a perfectly configured operating system? When choosing your remaining core exam, you will want to consider what your plans are for MCSA and MCSE. Both the MCSA and MCSE are split into two separate subtracks: one for Wmdows 2000 Server and the other for Wmdows 2003 Server. If you are planning on getting the most up-to-date MCSA and MCSE certificates, then you will want to consider going for one of the 2003 exams at this stage, since they count toward the MCSA and MCSE 2003 tracks.

Microsoft Certified Systems Administrator The Microsoft Certified Systems Administrator (MCSA) certificate is relatively new in compar• ison to the Microsoft Certified Systems Engineer (MCSE), which seems to have been available since computers were invented. The MCSA shares a similar relationship with the MCSE certifi• cate that MCAD shares with MCSD, in that you cannot obtain MCSE without first obtaining theMCSA. The MCSA certification is ideal if you are your development team's designated administrator, and it certainly won't do you any harm to have on your resume. If anything, having both devel• opment and operations-oriented certification on your resume will demonstrate a well-rounded knowledge of computer systems. You will also find that if you develop many Windows Server• based applications, especially those that integrate with Active Directory or Exchange, then the MCSA and MCSE certifications are a great way to consolidate your knowledge in those areas. 530 APPENDIX C CERTIFICATION

As I mentioned earlier, there are two subtracks for the MCSA and MCSE certifications: one for the Windows 2000 family and one for the Windows 2003 family. For the purposes of this book, I will look only at the 2003 track, but you can fmd more information about the 2000 track on the Microsoft Certification site. To obtain MCSA certification, you need to pass two core exams and one elective. The first core exam covers server operating systems, and the second covers client operating systems. If you have already passed your MCDBA certification, then you will have already passed the server OS exam, so you just need to obtain the client OS exam. See Table C-7.

Table C-7. MCSA Core Client OS Exam Choices Exam Number ExamTrtle 70-270 Installing, Configuring, and Administering Microsoft Windows XP Professional 70-210 Installing, Configuring, and Administering Microsoft Wmdows 2000 Professional

In all honesty, the client OS exams should be a walk in the park for a developer, since you will already have more than a passing familiarity with most of the topics covered. There were certainly no topics, other than Remote Installation Services, on the exam that I was not already comfortable with. For the elective exam you have five choices, one of which is the Installing, Configuring, and Administering Microsoft SQL Server 2000 Enterprise Edition exam covered by the MCDBA, so if you have already passed your MCDBA, you will not need to take an elective for MCSA. Ifyou didn't go down the MCDBA route, then the remaining choices for your elective are as shown in Table C-8.

Table C-8. MCSA Elective Exams Exam Number Exam Title 70-286 Implementing and Supporting Microsoft Systems Management Server 2.0 70-227 Installing, Configuring, and Administering Microsoft Internet Security and Acceleration (ISA) Server 2000, Enterprise Edition 70-284 Implementing and Managing Microsoft Exchange Server 2003 70-299 Implementing and Administering Security in a Microsoft Windows Server 2003 Network

Any of the elective exams for MCSA, including the SQL Server exam, also count as an elec• tive toward MCSE, so you can choose freely, knowing that you will not have to take more exams than absolutely necessary. As an alternative to taking an elective exam for the MCSA certification, Microsoft will give you credit if you have passed any of the following combinations of CompTIA exams:

• CompTIAA+ and CompTIA Network+

• CompTIAA+ and CompTIAServer+

• CompTIA Security+ APPENDIX C. CERTIFICATION 531

You can find out more details about CompTIA certification at http: I lwww. comptia. org.

Microsoft Certified Systems Engineer The MCSE certification is the top-level Microsoft certification for Systems Administrators and Engineers. It builds on the foundation of the MCSA and tests for more specific skills related to delivering secure, high-availability infrastructure based on the Microsoft platform. The MCSE exam requires the most passes to obtain: seven in all. Fortunately, the three passes gained toward your MCSA (by whichever means you got them) will count toward the MCSE certifica• tion, leaving you with just four remaining exams.

Note Please note that only the CompTIA Security+ certification will count toward an elective for the MCSE certification.

The remaining four exams for the MCSE are all core exams, although there are a few extra options for the elective that I will discuss in a minute. The core set of exams is split into three categories, some of which will have been covered by the MCSA but are included here for completeness. The first category is Networking System, and all four exams are required; see TableC-9.

Table C-9. MCSA Core Networking System Exams Exam Number Exam Trtle 70-290 Managing and Maintaining a Microsoft Windows Server 2003 Environment 70-291 Implementing, Managing, and Maintaining a Microsoft Windows Server 2003 Network Infrastructure 70-293 Planning and Maintaining a Microsoft Windows Server 2003 Network Infrastructure 70-294 Planning, Implementing, and Maintaining a Microsoft Windows Server 2003 Active Directory Infrastructure

If you have already obtained MCSA status, then you will have no doubt passed either 70- 290 or 70-291 already, so you will have just three of these exams to pass. The second category of core exams is the Client Operating Systems, the exams for which are exactly the same as the client exams for the MCSA exam, which you may have already passed. The third and final cate• gory of core exams is Design. In this category you are tested on your ability to develop some portion of the network infrastructure. You have two choices for this category, from which you must choose one exam, one aimed at security and the other at general network infrastructure and Active Directory. See Table C-10. 532 APPENDIX C CERTIFICATION

Table C-1 0. MCSE Core Design Exam Choices Exam Number ExamTHie 70-297 Designing a Microsoft Windows Server 2003 Active Directory and Network Infrastructure 70-298 Designing Security for a Microsoft Windows Server 2003 Network

The last piece in the MCSE puzzle is the elective exam. If you have already passed your MCSA exam, then you will have already fulfilled this requirement. If not, you are free to choose from any ofthe electives from the MCSA exam, the other exam from the Design category (i.e., 70-298 if you took 70-297 for your core requirement), or either of the exams listed in Table C-11.

Table C-11. MCSE Elective Exam Choices Exam Number Exam Title 70-229 Designing and Implementing Databases with Microsoft SQL Server 2000 Enterprise Edition 70-232 Implementing and Maintaining Highly Available Web Solutions with Microsoft Windows 2000 Server Technologies and Microsoft Applica• tion Center 2000

Overall, the MCSE exam is a fairly difficult one to pass, but is certainly worth the effort, especially if your current or potential employer is interested in partnering with Microsoft. The standard Microsoft Certified Partner program requires a company to have two MCPs on full-time staff before it is considered eligible to participate. However, the Microsoft Certified Gold Partner Program requires five full-time MCSEs for eligibility, so if you pass this exam, your company may also be able to benefit as well.

Specialization Recently introduced into the MCSA and MCSE tracks is the ability to extend your accreditation into a specific area. Currently, there are two specializations available for messaging and security. Obtaining a specialization usually involves taking one or two extra exams on top of the require• ment for your certification. You can find out what extra exams are required for both the messaging and security specializations on the Microsoft Certification website.

Non-Microsoft Certification It is becoming increasingly rare to see 100% Microsoft-based solutions, and in today's climate, placing all your eggs in a single basket is widely considered to be a bad move. Over the last month I have seen an increase in the number of clients who are looking to open-source solu• tions such as MySQL and PostgreSQL in place of SQL Server 2000. This is especially prevalent in cases in which SQL Server would be overkill but a Microsoft Access database would crumble under the pressure. Other cases can require more power than is available with SQL Server, which sees clients turning to alternative databases such as Oracle. Databases are not the only area in which we see non-Microsoft technologies being inte• grated into a .NET environment. The advent ofXML Web Services has unleashed a new wave APPENDIX C CERTIFICATION 533 of integration of previously isolated technologies. One area that looks set to boom is the use of Macro media Flash as a client -side technology for rich applications. The newly released 2004 version ofMacromedia Flash even offers a specific application authoring mode following the familiar forms/ controls model. With this wide variety of technologies outside the Microsoft camp you may need to look elsewhere to prove your worth to potential or current employers. Fortunately, Microsoft is not the only vendor with a certification offering. Many other vendors in the IT industry offer compre• hensive certification paths for their own products. In this section we are going to take a brief look at the certification options available for the Oracle and MySQL database as well for Macromedia Flash.

Oracle 9i Certification from Oracle Corporation comes in three flavors. The first level is Oracle Certified Associate (OCA), which demonstrates a level of knowledge in one area of Oracle's product range. The second level is Oracle Certified Professional (OCP), which builds on the founda• tions of OCA but tests your knowledge in some of the more practical aspects of Oracle tech• nology as well as on a wider range of skills related to your chosen area. The third and final level of certification is Oracle Certified Master (OCM), the requirements for which are quite high. To obtain OCM you have to attend two compulsory Oracle University courses as well complete a practical test of your Oracle skills. As with Microsoft certification, Oracle's certification for their database products is split into two main tracks, one for developers and one for administrators. Currently, the highest level you can obtain as a developer is OCP, since OCM is available only on the administration track. The first step on the developer track is the OCA level certification Oracle9i PL/SQL Devel• oper Certified Associate. To obtain this accreditation you are required to pass two exams that test your knowledge of common database concepts such as tables, indexes, and stored proce• dures, as well your grasp of Oracle's PLISQL language. The skills tested at this level should be enough for any .NET developer who will be working with Oracle, since you will certainly build an appreciation and a thorough understanding of what can done with Oracle and how to achieve it. The OCP level on the developer track requires that you pass an additional exam once you have obtained your OCA. This exam focuses on Oracle's Forms product used to build applica• tions that run against an Oracle database. I had originally decided to stop after I obtained my OCA, since I couldn't foresee actually using Oracle Forms to build an application, and since this is a book on .NET development, I would imagine you too will be wondering where this particular skill might be put to use. However, recently, I have changed my mind on this, since I think that OCP will look better than OCA on my resume, so it seems worthwhile completing this one exam. For most of you, Oracle Forms will be an easy product to come to grips with, especially if you are already familiar with the Oracle database. The concept for building an application with Oracle Forms doesn't differ greatly from what you will already be used to. More information on Oracle's certification offerings can be found at http : I IVMW. oracle. com.

MySQl For those of you not familiar with MySQL, it is a freely available open-source database server that you can use to power your applications. Currently, MySQL can be accessed from .NET 534 APPENDIX C CERTIFICATION

using either the OBDC or OLEDB .NET data providers. There are currently some open-source projects working on a full .NET data provider for MySQL that you can also play around with, but you may want to hold off using them in a production environment. For many projects MySQL provides a great alternative to Microsoft Access, and in some cases SQL Server, since it is extremely quick and very stable. It is also a true database server, as opposed to the simple file-based database of Access, meaning that it can handle many more concurrent connections. MySQL AB, the company behind MySQL, currently offers two levels of certification for their database product. The first level of accreditation is the MySQL Core certification, which has been available since March 2003. I am currently working with one of my developers on this certification, and we are finding it fairly easy going. The Core certification really serves as an introduction to the world ofMySQL, and ifyou are familiar with other database products such as SQL Server or Oracle, then you will have no problem working through this certification. The second level of certification available from MySQL AB is the Certified MySQL 4 Profes• sional. This certification level requires that you have already obtained the MySQL Core certifi• cation and that you take a further exam. The Professional certification builds on Core level and tests your abilities in a much more advanced sense. At this level you are tested much more on your ability to secure, optimize, and maintain a MySQL database than at the Core level. The MySQL website, http: I /www. mysql. com, contains much more information on these certification levels.

Macromedia Flash Today's users expect a great deal from the user interface of a Web-based application. The advent of widely available broadband access means that users are looking for an ever richer experience from the applications that they use on the Web. While technologies such as DH1ML and JavaScript can help to improve the usability of standard HTML applications, they are quite limited in their reach and difficult to implement across browsers. Macromedia Flash has been around on the Web for years and is almost always present on a user's machine. In recent years, Flash has expanded from being just an application for animations to a technology capable of supporting rich application user interfaces. Proving your ability to build rich interfaces for your applications will almost certainly prove important in the coming years, if not months. Fortunately, Macromedia offers comprehensive certification for most of their products, and Flash is no exception. There are actually two certifi• cates available for Flash: one aimed at designers and the other at developers. The developer exam covers all aspects of Flash relating to the development of rich applications, with particular focus on design and ActionScript coding. You will need some experience in Flash in order to be able to pass this exam, since some of the questions will quiz you on the actual use of Flash, as opposed to the theory. You can find a full breakdown of the requirements for the Flash Certified Developer exam athttp://www.macromedia.com.

Exam Resources There is a wide range of resources available to help you pass your certification exams. Without taking advantage of some of these resources you may find it difficult to pass some of the exams unless you are particularly experienced in the area covered by the exam. APPENDIX C • CERTIFICATION 535

Exam Requirements Your first step for any certification test should be to get a list of the topics that will be covered. You will almost definitely find these on the website of the vendor who is offering the certifica• tion test. Certainly, all the test sponsors discussed in this appendix offer comprehensive break• downs of their exam requirements. Looking at the exam requirements, you will be able to form an idea of how much work is necessary for you to pass the test. In some cases you may choose to work on other tests before attempting a particular test because there are just too many requirements that you are unfamiliar with. No matter what any other reference material says, you should always use the vendor's exam requirements as your master plan for exam preparation.

Study Guides Study guides are an inexpensive, and usually quite effective, mechanism for preparing for a test. Certainly, if you work as freelancer or a contractor, then you may not be able to afford the cost of instructor-led training, in which case a study guide is invaluable. I can honestly say that there is no particular provider of study guides that you should opt for. In the case of the Microsoft certification tracks, the study guides from Microsoft Press are an obvious choice, but you may want to back them up with some solid reference books. I can especially recommend the excellent Professional C#, second edition, by Simon Robinson, which I used during my C# exams. Many of the study guides are offered as reduced-price packages for an entire certification track. This is most definitely the case for the MCSE study guides available from a wide variety of publishers, so you may want to consider investing in the whole set, as opposed to buying each book separately. You'll certainly save money in the long run.

Practice Tests As the time nears for you to take your exam, you may want to try your hand at a practice test. These tests are built to mimic what you will see in the actual exam, so they can be useful for familiarizing yourself with the process. Generally, you will get many more questions on your practice test than you will get on the actual exam. If you can successfully answer all the questions on the practice test, then you stand a good chance of passing the real thing. Another point about practice tests is that it is not unusual for you to see the same (or almost the same) question on your practice test as on the real exam. In fact, the first test I took had at least five or six questions that were almost laughably similar to those on the practice test. Most study guides come with a practice test or two on the accompanying CD. I have person• ally found these to be an absolute waste of time, and instead I opted to purchase my tests from an online provider. Depending on which vendor's tests you are taking, you can find good practice tests at both http: I lwww. selftestsoftware. com and http: I lwww. measureup. com. I have used tests from both providers, and I have never failed an exam yet.

'ftaining While some people are perfectly comfortable learning from a book, many prefer taking part in instructor-led training. You will find that most of the certification paths, the Microsoft ones included, 536 APPENDIX C CERTIFICATION

offer official accompanying training courses operated throughout the world by vendor-approved training centers. Although you can purchase a decent holiday for the price of some of these training courses (see the following note), they are worthwhile, and you get a great deal of study material to take home.

As this book goes to print, one of my developers will be whisked off on an expensive training course that truly is a decent holiday! After spending two nights in Orlando, he will spend the next five days on a cruise ship sailing around the Caribbean learning about the wonders of PHP. More details can be found about this course at http: I /www. phparchiteet. com/ cruise.

I was fortunate enough to win a place on a Microsoft training course at a local provider, and I found it really useful, especially since such courses are specifically geared toward the exam you will be taking. You have the benefit of spending five days with an instructor who knows the exam inside and out, so you can gain some useful insights over a few pints at lunch. For more information on instructor-led courses, either visit your chosen vendor's website or contact your local training provider.

Summary In this appendix we have addressed a wide variety of certification options. We have looked in close detail at the Microsoft developer certifications, including:

• Microsoft Certified Professional

• Microsoft Certified Application Developer

• Microsoft Certified Solution Developer

We have also taken the time to look not only at the Microsoft certifications available for administrators and systems engineers, but also at the certification options available from other vendors such as Oracle, MySQL AB, and Macro media. Finally, we looked at the various resources available to help you pass your certification exams. After reading this appendix, you should have a much clearer idea of which accreditations you want to seek and how to go about achieving them in the most efficient way possible. Index

A stress testing, 257 About form Test error counts, 273 creating, 78 Test properties, 270 ShowDialog method, 79 Test results, 262, 263, 268 visual inheritance, 79 dynamic tests, 270 absolute positioning General test properties dialog, 270 web form editing, 107 overview summary, 268, 269 ACT (Application Center Test) tool, 259 Test result summary, 268, 272 ACT Enterprise Edition, 257 Test run graph, 269 ACTTrace.log file, 267 test script structure, 284 Advanced Settings dialog, 271 test tracing properties, 267 anonymous access, 282 TestFiles sample test, 260 authentication methods supported, 282 testing different numbers of connections, Body Search sample test, 260 279 Browser Type sample test, 260 users and user groups, 282 client testing, 280 test users, 283 connections, 271 VS.NET, integrated into, 287 creating a new test, 264 Active option, Configuration dropdown manually, 265 Property page, web apps., 367 properties, 265 active project customizing test scripts, 283 Solution Explorer, VS.NET IDE, 14 HTTP 1.1 keep-alive feature, 284 Active Solution Configuration dropdown, 368 debugging properties, 267 Active UI Elements behavior, 357 Developer Edition, 257 ActiveDocument property, DTE interfaces, 446 downloading,257 ActiveWmdow property, DTE interfaces, 447 Duwamish sample test, 263 ActiveX controls Fitch & Mather sample test, 263 CAB files packaging, 322 Form Data sample test, 260 deployment project template, VS.NET, 293 form-based logon methods, 282 downloading from internet, 320 functionality, 258 flashing clock control, 321 general properties page, 266 placing controls in Cab project, 322 graphs, 278 ACTTrace.log file, 267 integrated ACT UI, 287 adapters configuring test properties, 288 Mobile web forms, 205 creating test, 287 adding device adapters, 207 properties, configuring, 288 Add Dialog dialog results, 288 creating dialog boxes, 303 multiple clients improving performance, Add New item dialog 281 creating additional WmForms, 78 network statistics during testing, 274 script-based wizards, 466,467 New Test WIZard, 272 Add Project Output Group dialog performance counters, 280, 281 Setup project type, 295 performance testing, 257 Add Reference dialog requests, 275 additional debugging functionality, 88 Response Codes, 275 Add Web Reference sample results, 260 creating reports as web services, 348 simulation tool, 257 Add-In Manager, VS.NET Socket request time-out, 267 Tools menu, 13,412 using,412 537 538 liND

Add-In wizard, 402 error- class not registered, 410 Aboutboxspecification,405 repeated debug sessions, 410 building setup project, 407 tracking events and exceptions, 409 Connect.cs file, 407 when selected (Exec), 409 converting macro into add-in, 461 add-ons enabling for macros, 403 MIT add-on, 203 loading on startup, 405 SDE add-on, 203 modal UI (user interface), 405 AddCommand class modifying wizard-generated code, 409 adding class, 419 naming add-in, 404 ReplaceCommandlnMenu method, 418 options, 404 wrapping AddNamedCommand method, selecting programming language, 403 418 Tools menu item option, 405 AddFileTo VSProject method user availability of add-in, 405 script-based wizards, 470 verifying selected options, 406 addininstance object add-ins Connect class private variables, 414, 415, accessing menu and command bar, 416 417 Add-In template, 402 setting, 415 added to Tools menu, 411 Addins collection additional resources for, 439 DTE interfaces, 447 architecture, 400,401 Additional Network Statistics section version differences, 400 ACT tool requests, 275 availability of (QueryStatus), 409, 413 AddNamedCommand method call backs to VS.NET, 414 AddCommand class wrapping, 418 collections of individual add-ins, 447 example, 420 COM module, 400 Icon Explorer add-in, 417, 421 COM objects for, 400 tracing add-in methods in debugger, 412 Connect class ADO.NET, 149-150 inheritance, 408 classes, 149 methods, 408 data access, .NET, 148 namespaces, 407 data controls, 61 variables, 414, 415 disconnected objects, 149 converting macro into add-in, 460 interoperability, 149 customizing, 393 introduction, 149 described, 399 object model, 148 DTEobjects Advanced Save Options dialog version differences, 400 file menu, VS.NET IDE, 9 working with, 421 Advanced Settings dialog exception messages, 417 ACT tool, 271 executing commands with Exec, 413 Advanced SQL Generation Icon Explorer add-in, 417 Data Adapter Configuration WIZard, 178 IDTCommandTarget interface Align menu COM objects for add-ins, 401 formatting multiple controls, 55 macros compared, 441 All Configurations option, Configuration modifying add-in code, 409 dropdown multiline find and replace add-in, 434 Property page, web apps., 367 passing variable values to add-in, 415 ampersand(&) character purpose of, 399 keyboard shortcuts, 72 referencing instance of add-in, 415 Analyzer, Options dialog reloading menu on invoking, 417 configuringVS.NET, 354 setting command name and tooltip, 416 Anchor property similarities with macros, 399 anchoringWinForms controls, 56 status of, indicating, 413 anonymous access tracing add-in methods in debugger, 410 ACT tool, 282 breakpoints, 410 App.ico file DemoAddin icon not seen, 411 solution contents, 49 539

Appearance property ASP.NET applications dialog boxes, 78 Crystal Reports integration, 342 ToolBar button, 76 deployment project template, VS.NET, Application class 293 Run method, 50 Global Application Class file type, 497 Application Configuration file type, 496 mobile web apps., 203 application deployment preview reports in, 342 see deploying projects/ applications ASP.NET controls, ll4 Application directory, 508 Button server control, 117 Application Folder code for, 124 installing components in, 318 CodeBehind class, 129 Application Name installation element declaring public or protected instances, Setup project type, configuring, 300 129 application project HTML controls compared, ll8 Setup project type, link to, 301 List controls, 115 ApplicationName.exe.config file Mobile controls, 115 connection strings, 164 mobile input controls compared, 211 applicationObject variable Rich controls, llS Connect class private variables, 414, 415, Server controls, 138 417 User Control setting, 415 targetSchema property, 109 Application_Error event handler Validation controls, 115 handling exceptions, 110 Web Form controls, ll5 AppliedDeviceFilters property ASP.NET mobile web apps., 136, 137 Image mobile controls, 143 Mobile Framework, 204 ArrayList definition MobilelnternetToolkit,136 dynamic help, 390 Mobile Templates, 219 .asax file type, 497 Mobile Web Application project type, 493 .ascx file type, 497 multiple mobile web forms in a single .asmx file type, 496 page, 137 ASP (Active Server Pages), 95 ASP.NET projects ASP. NET creating report, 343 .NET Framework and .NET CE 221 placing controls in Cab project, 321 ASP and ASP. NET, 95 ASP.NETWeb Matrix, 121, 187 ASP.NETClientFiles directory, 503 aspnet_client directory, 507 building app. in VS.NET, 100 aspnet_regiis.exe, 502 creating new app., 151 aspnet_state.exe, 502 without typing any code, 158 .aspx file type, 496 CodeBehind file, 96 assemblies creating new project in VS.NET, 100 .NET Framework and .NET CE 221 directories, 505 .NET managed-code assemblies DLL file and CodeBehind file compared, COM objects for add-ins, 400 129 Assembly, .NET Framework, 95 handling exceptions, llO creating strongly named assemblies, 318, logical segments, presentation layer, 97 319 page coding, 127 detecting strongly named assemblies, 319 presentation file, 96 GAC contents in command window, 504 registering with liS, 502 GAC contents in Windows Explorer, 504 state service, 502 Global Assembly Cache (GAC), 503 Temporary ASP.NET Files directory, 503 qualified assembly name, returning, 312 VBScript, 42 registering, 99 versions VS.NET, compatibility of, 99 sharing between apps., 317 v:iel

Assemblylnfo.cs, 103 Bootstrapper property solution contents, 49 installing .NET Framework with, 309 AssemblyKeyFile attribute resetting, 311 creating strongly named assemblies, 319 Windows Installer changing, 306 At Startup dropdown list, 356 bottlenecks attributes liS, 282 attribute value quotation marks, 363 performance, 281 Attributes node, XHP document, 392 braces indent, CIC++, 362 insertion of double quotes, 124 braces open, C#/J#, 362 authentication Break button Authentication methods dialog, 219 debuggingWmForms apps., 86 methods supported, ACT tool, 282 breakpoints security, mobile web apps., 219 Breakpoints window, 82 Auto Hide option, tool windows, 6 debuggingWmForms apps., 80 Auto Insert-Attribute value quotes adding breakpoint, 81 Options dialog, 123 stepping through code, 81 Auto-load changes option, 359 debugging wizards, 4 79 AutoComplete tracing add-in methods in debugger, 410 configuring, 122 browser connections, 270 inserting elements in HTML mode, 121 browser session, recording mobile web apps., 141 creating a new ACT test, 264 Submit HTML button, 125 Browser JYpe sample test, ACT, 260 autogenerating files browsers VS.NET projects, 39 security, mobile web apps., 217 automatic formatting supported by ASP.NET mobile controls, 207 configuration in Tools menu, 126 btnSearch_Click event automation macros data controls, WmForms, 66 source control, 252 event handlers, 53 Automation Model BUG token, customizing, 359 see EnvDTE Automation Model Build Configuration Manager, 368 Autos window Build Configurations debuggingWinForms apps., 84 customizingVS.NET IDE, 364 Available Device Filters build order, 370 Mobile controls, 144 creating, 369 dependencies, 370 B Project configurations, 364 BannerText property solution build configuration, 368 Setup project dialogs, 303 development cycle, 369 Basic options, text editor for large projects, 369 customizing, 361 multiple developers, 369 behaviors Build menu, VS.NET IDE, 10 customizing start-up behavior, 356 build orders bin directory, 501 customizing, 370 binding data Project Dependencies, 371 see data binding Build properties dialog binding reports, Crystal Reports, 332 implementing wizards, 4 72 Pull Model, 332 resource-only DLL, 481 Push Model, 333 build server Bitmap file type, 495 team development, 243 BizTalk Server exam topics, 524 Build Solution .bmp file type, 495 app. and Setup project link, 301 Body Search sample test, ACT, 260 business logic layer, 94 BodyText property Business Objects, 351 Setup project dialogs, 303 Button control bookmarks CssClass property definition, 136 task list, VS.NET IDE, 35 web form controls, 115 Ll 541

Button HTML control, 117 Non-Microsoft certification, 532 Button server control Flash Certified Developer, 534 ASP.NET controls, 117 MySQL 4 Professional, 534 code for, 124 MySQL Core certification, 534 IntelliSense showing properties, 123 Oracle Certified Associate (OCA), 533 Oracle Certified Master (OCM), 533 c Oracle Certified Professional (OCP), 533 C# options, text editor for CGI-BIN interface, 94 customizing, 361 Check Out dialog CIC++ options, text editor for Visual SourceSafe, 241 customizing, 362 Check Out Exclusive command Cab project type, 320-323 Visual SourceSafe, 242 deployment project templates, 293 CheckBox control, web forms, 116 placing controls in, 321 Checkbox properties summary,328 Setup project dialogs, 303 using as compression tool, 322 CheckBoxList control, web forms, 116 caches/ caching CheckOutltem(s) methods ASP.NET directories, 505 SourceControl object, 252 VSWebCache directory, 506 Class Library project type Calendar mobile control creating, 312 mobile input controls, 212 creating Smart Device app., 224 toolbox, VS.NET, 142 described, 491 Call Stack window web projects, 501 debuggingWinForms apps., 83 Class View window, 27 capitalization, HTML/XML sorting the Class View, 28 customizingVS.NET IDE, 363 classes caret .NET Framework and .NET CF, 222 see text cursor ADO.NET, 149 cascading style sheets, 133 Classes table adding a style rule, 135 relationship to Students tables, 151 creation and use of, 134 client/server systems file types, 495 ASP, 95 case statements, C#/J# web development, 94 customizing, 362 clients certificates multiple clients improving performance, security, mobile web apps., 217 281 certification, 511-536 performance, 281 Microsoft Certification, 511 testing, 280 Microsoft Certified (MC) Clipboard Ring tab, Toolbox window, 31 MC Application Developer (MCAD), ClockControl_Web application 513,516 Web Setup project deploying, 324 MC Database Administrator (MCDBA), closing tag insertion 512,528 inserting elements, HTML mode, 121 MC Desktop Support Technician customizingVS.NET IDE, 363 (MSDST), 512 CLSID I {clsidPackage} MC Professional (MCP), 512, 515 implementing wizards, 4 74 MC Solutions Developer (MCSD), 513, installing wizards, 482 526 VSDIR file structure, 464, 465 MC Systems Administrator (MCSA), wizard overviewVS.NET, 464 512,529 code behind files MC Systems Engineer (MCSE), 512,531 ASP.NET page coding, 127 MCTrainer (MCT), 511,512 Web Service file type, 496 Microsoft Office Specialist, 513 CodeDOM Microsoft Office Specialist Master implementing wizards, 4 77 Instructor, 513 Code DOM Support specializations, 532 implementing wizards, 4 75 542 liND

Code File file type, 495 CodeWalker class code formatting options do methods, 431 edit menu, 9 collections code generation EnvDTE properties, 427 implementing wizards, 475 color properties code providers HTML mode, VS.NET, 112 implementing wizards, 4 72 Tools menu, 112 code reference Color Dialog dialog wizard overviewVS.NET, 464 toolbox, available in, 71 CodeBehind class COM (Component Object Model) inheritance, 129 add-ins, Visual Studio, 400 namespaces referenced, 129 Client Form Controls, 314 CodeBehind file COM-Callable Wrapper (CCW), 400 ASP.NET, 96 components controls and events declared and wired, adding to toolbox, 385 130 bottlenecks, 282 Data Form WIZard, generated by, 158 interoperability, 42 DIL file and ASP. NET compared, 129 registration information, 304 HTML code separation, 126 COMDIL mobile web apps., ASP. NET, 138 avoiding DIL Hell problem, 317 presentation file, 96 Win32resources,wizards,480 principle of code behind, 129 COM Interop service storing CodeBehind declaration/tag, 103 .NET Framework, 313 Text Mode, 104, 126 .NET Framework and .NET CE 221 viewing content of, 128 implementing wizards, 4 72 visibility of file, 127 COM objects web user control, 131 add-ins, for, 400 CodeDomProvider object managed objects communicating with, implementing wizards, 4 75 313 CodeElements collection System.Runtime.InteropServices navigating, 428 namespace, 408 CodeModel class COM Server EnvDTE CodeModel objects, 427 displaying version, 314 FileCodeModel object, 427 implementing wizards, 4 73 Language property, 425 registry entry navigating CodeElements collection, implementing wizards, 4 73 428 Combined Help Collection Manager, 360 CodeModelWalker add-in/ class ComClient_Setup project type, 314 add-ins working with DTE object, 423 command line arguments methods, 425 external tools passing, 376 do methods, 426 Command mobile control Walk methods, 426 mobile input controls, 212 WalkDTE method, 423, 425 toolbox, VS.NET, 141 CodeModelWalker pattern command mode add-ins working with DTE object, 421 switching modes, 85 CodeModelWalker project Command objects, 167 add-ins working with DTE object, 423 automatic generation, 173 enabled, 424 CommandText field, 168, 169, 173 no open solution, 423 CommandType property, 167, 173 CodeNamespace class data components, 160, 161 implementing wizards, 4 78 data providers, .NET, 149 InfoLocation property, 428 defining connection for, 168 CodeProviderFactory class EnvDTE Automation Model, 416 implementing wizards, 472,475 parameter collections, 170 CodeTypeDeclaration object parameterized queries, 170 implementing wizards, 4 78 query statement, defining, 168 Ll 543

Command window conditional formatting debuggingWmForms apps., 84 customizing reports, 338 directory listing of a GAC entry, 505 CONFIG directory GAC contents in, 504 .NET Framework directories, 502 CommandBars object DefaultWsdlHelpGenerator.aspx, 502 DTE interfaces, 448 machine.config file, 502 Commands object config files DTE interfaces, 446, 448 .config file type, 496 Commands tab, Customize dialog source control file types, 248 configuringVS.NET, 354 Configuration dropdown box dragging onto menus/toolbars, 378 Property page, web apps., 367 CommandText field, 168, 169, 171, 173 Setup project type, 297 CommandTypeproperty, 167,168,173 configuration files comment editing, C#/J# Application Configuration file type, 496 customizingVS.NET IDE, 362 compiling projects, 502 comments Configuration Manager, 10 task list, VS.NET IDE, 35 configuration, 353 Commerce Server exam debugging wizards, 4 79 MCAD,525 mobile devices, 354 Common Files directory, 508 restoring default window layout, 372 (CLR) Server Explorer, VS.NET, 354 .NET Framework and .NET CE 221 Visual SourceSafe integration, 353 page inheritance, 127 Visual Studio Analyzer integration, 354 Common type system Connect class, 417 .NET Framework and .NET CE 221 Connect method, 408 Compact Framework Exec method, 409 see .NET Compact Framework inheritance, 408 Community Starter Kit methods, 408 data access, .NET, 147 IDTCommandTarget interface, 409 Compare Validator control, 212 MultiLineFindReplace project, 436 compiling projects, 502 namespaces, 407 Complete Word feature, 124 OnAddinsUpdate method, 409 completed constructs, C#/J# OnBeginShutdown method, 409 customizingVS.NET IDE, 362 OnConnection method, 408 Component Class passing variable values to add-in, 415 creation, 201 OnDisconnection method, 408 Component Designer OnStartupComplete method, 409 Server Explorer, 200 private class variables, 414 Component Tray QueryStatus method, 409 adding controls to, 62 Connect constructor ComponentModel class modifying, 418 Container method, 50 tracing add-in methods in debugger, 410 components Connect method, 408 additional debugging functionality, 89 modifying exception handler, 416 deployment project templates, 293 Connect.cs file InitializeComponent method, 50 Add-In wizard, 407 installing, Merge Module project, 318 namespaces, 407 nongraphical controls, 60 Connection objects Components Designer window automatic generation, 173 building Windows apps., 91 buildingASP.NET app., 153 Components tab, Toolbox window, 31 configuring properties, 164 compression tool connection strings, 164, 165 using Cab project as, 322 data components, VS.NET, 160, 161 Condition property Data Form WIZard, connection for, 153 MDAC Registry Search Settings, 311 Data Link properties configuration, 154 Conditional Compilation Constants, 365 data providers, .NET, 149, 163 544 "''NDEX

events, 166 Imagelist control, 75 selection of database tables, 155 IntelliSense showing properties, 123 Solution Explorer, 163 invisible controls, 60 connection pooling Label control, 54 .NET Framework and .NET CF, 222 Menu control, 71 connection strings menus, 71,72 Connection objects, 164, 165 message boxes, 68 hard coding, 164 mobile input controls, 211 key-value pairs, XML, 164 selecting to alter properties, 125 Web.Config file, 164 Smart device controls, 228, 229 connections TextBox control, 53 ACT tool, 271 ToolBar control, 75 browser connections, 270 Wmdows Control Library project type, 492 users and user groups, ACT, 283 WmForms controls, 51 connection pooling, 271 Convert dialog debugging database connections, 233 file menu, VS.NET IDE, 8 improving client performance, 281 cookieless sessions modifying test script, 286 security, mobile web apps., 219 network statistics, ACT tool, 27 4 CookielessData class number of requests, 272 mobile device user input, 211 testing different numbers of, 279 cookies ConnectionString property, 165 testing, 283 connectMode parameter corrupt files passing variable values to add-in, 415 Wmdows Installer, 292 Console Application project type, 494 Count property, collection parameter creating Smart Device app., 224 checking if positive, 431 Container method, ComponentModel, 50 CPU usage containers client testing, 281 Mobile web forms, 205 Create Schema option content file XML menu, VS.NET IDE, 10 Page directive, 127 CreateEditPoint method Context element EnvDTE EditPoint function, 433 XHP document, 389, 392 Crystal Reports, 42, 329 Context Menu control, 73 ASP.NET apps., integrating into, 342 ordering controls, 58 binding report during runtime, 346 Property option, 105 binding reports, 332 context menus creating report, ASP.NET project, 343 creating, 73 Crystal Decisions, 346 editing, 74 Crystal Designer, 333, 335 WmForms apps., 73 Crystal Report file type, 495 context-sensitive help, VS.NET IDE, 36 Crystal Report Gallery dialog, 333 ContextParams array CrystalReportViewer controls, 332 implementing wizards, 4 76 customizing reports, 336 contexts default installation, 329 XML Help Provider, 388 error handling, 350 controls exporting web report, 34 7 aligning on web form, 107, 108 group selection formula - warning, 331 anchoring controls, 56 IDE integration, 329 ASP.NET, 114 integrating reports into apps., 339 Context Menu control, 73 integrating reports into Wmdows apps., creating instance of control, 52 339 customizingVS.NET IDE, 384 Languagelndependence,330 data controls, 61 multiple apps., reports for, 331 formatting, 54 previewing report in Design mode, 345 GroupBox control, 53 previewing reports, 341, 345 IDE window controls, 13 printing report from browser, 346 Ll 545

printing without previewing, 342 customizing reports, 336 Report Expert, 334, 336 customizingVS.NET IDE, 353-397 ReportDocument class, 332 Build Configurations, 364 ReportDocument component, 340 build order, 370 adding, 344 dependencies, 370 second pass, 330 Project configurations, 364 Strongly Typed reports, 331 solution build configuration, 368 temporary report file not accessible, 348 customization options, 353 terminology, 330 Dynamic Help, 387 Typed Reports, 329 XML Help Provider, 388 Untyped Reports, 330, 331 environment settings, 354 web resources, 352 Auto-load changes option, 359 Web Services, 330 custom keywords, 360 Crystal Reports tab, Toolbox window, 31 developer profiles, 354 CrystalReportViewer control Device Tools, 363 creating reports as web services, 349 dynamic help, 357 integrating reports into Wmdows apps., 340 help, 360 preview reports in ASP. NET app., 342 HTML Designer, 363 previewing Untyped reports, 341 keyboard shortcuts, 358 terminology, 332 project location, 358 .cs file type, 495, 496 Projects pages, 364 Text Mode, 127 round-tripping, 359 csc.exe source code highlighting, 358 compiling projects, 502 start-up behavior, 356 .csproj file type, 498 Task List tokens, 359 .csproj.user file type, 498 Text Editor, 361 .csproj.webinfo file type, 498 extensibility options, 392 .css file type, 495 add-ins, 393 CssClass property, 134 macros,393 Button control definition of, 136 VS.NET Integration Kit, 395 .cur file type, 495 wizards,395 current directory external tools, 375 .NET Framework and .NET CE 221 menus,378 CurrentXyz arguments creating, 380 external tools, 376 creating Macro media Studio MX menu, Cursor file type, 495 381 Custom Action Editor, 305 toolbars, 377 Custom Dialog controls, 303 creating, 378 Custom directory, 508 creating Macromedia Studio MX custom error page toolbar, 379 web forms, 110 toolbox, 382 custom exception classes Infragistics NetAdvantage Suite tab, 386 Crystal Reports, 350 managing controls, 384 custom keywords, 360 manipulating tabs, 385 Custom Macromedia Studio MX toolbar, 380 Snippets, 383 Custom Validator control, 212 VS.NET Integration Kit, 395 CustornActionData property, 306 Data Source Reference SDK, 396 Customer List report Debugging SDK, 396 creating reports with Crystal Designer, Environment SDK, 396 334,336 Help Integration SDK, 395 Customer_List report class Wmdow Control, 372 printing without previewing, 342 full screen mode, 374 Customize dialog, VS.NET restoring default configuration, 372 configuration options, 354 window configuration, 374 Customize Toolbox dialog, 385 window manipulation, 372 additional debugging functionality, 90 window modes, 372 546 "''NDEX

window types, 372 data sources Wmdow Layout, 356 connecting to, 149 CustomParams array Connection objects, 160 improving wizards, 488 DataA.dapter objects, 160 development tool for, 14 7 D disconnected objects, linking to, 149 data access, 147, 148 executing commands on, 149 ADO.NET, 148 Command objects, 160 disconnected objects, 149 querying, 17 4 distributed computing, 148 command operations, 167 OLE DB Provider for data source, 162 selecting for Crystal Designer, 335 opening connection to data source, 149, SqlDataSource control, 187 161 storing information, 14 7 Smart Device development, VS.NET, 232 update modified data, 17 4 VS.NET example, 150 usingVS.NETwith, 150 Web Matrix, 187 working with data, 167 data binding working with data source, 168 data controls, WmForms, 66 Data tab, Toolbox window, 31 to list control, 187 drag and drop method, 159 data components DataA.dapter objects, 17 4 DataA.dapter object, 174 configuration, 17 4 DataGrid control, 159 Data Adapter Configuration WIZard, 176 DataSet object, 181 Advanced SQL Generation, 178 DataView object, 184 Data Adapter Preview dialog, 11 drag and drop method, 159 DataAdapterWIZard, 16 third part components, 186 data components, VS.NET, 160, 161 adding a reference, 187 data providers, .NET, 149 Toolbox,159,160, 161 disconnected objects ADO. NET, 17 4 Data Connection node error in fill process, 180 Solution Explorer, VS.NET, 161 Fill method, 149 keyboard shortcut, 161 filling, 181 Data Connections, VS.NET IDE, 20, 21 previewing data, 180 data controls query to load data into DataSet, 177 mobile controls, 212 Query Type, 177 WinForms, 61 selection of query type, 176 binding data to grid, 66 database tables Data Form WIZard see tables building ASP.NET app., 152 Database Tools, Options dialog, 354 CodeBehind file generated by, 158 DataBind method, 345, 346 Connection object for, 153 DataBindings dialog, 344 displaying Master-Details web form, 157 DataColumn, 183 Data Link Properties dialog DataGrid control data controls, WmForms, 63 data access, Smart Devices, 232 Server Explorer, 20 drag and drop method, 159 Data Link properties, 154, 162 event handlers, 197 Data menu, VS.NET IDE, 10 methods and properties, adjusting, 196 data providers, .NET, 149 web form controls, ASP.NET, 116 .NET Data Provider, 150 DataList control, 116 Command object, 149 DataReader object, 150 Connection object, 149, 163 DataSet file type, 495 core objects, 149 DataSet object, 181 DataA.dapter object, 149 .NET Framework and .NET CF, 222 DataReader object, 150 .xsd extension generated, 183 DataSet object, 181 composing table member from, 185 previous data providers, 150 creating, 181, 184 Data Source Reference SDK, 396 data components, VS.NET, 160 Ll 547

DataTable as element, 183 DefaultWsdlHelpGenerator.aspx different data providers, 181 CONFIG directory, 502 disconnected objects, 149, 174, 181 Delete method, 420 typed and untyped, 184 DeleteCommand, 175 XML file persisting data, 183 DemoAddln icon, 411 DataTable, 183 dependencies, 370 DataView object, 184 dependent assemblies .NET Framework and .NET CE 222 applications with, 311 binding to list control, 185 Server Ubrary app., 312 creating, 184 Setup project type, 311 customizing properties, 186 detecting dependencies, 313 data components, VS.NET, 161 deploying projects/ applications data controls, WmForms, 66 .NET Framework, checking version, 307 Debug directory, 501 associating apps. with file types, 304 Debug option, Configuration dropdown building customer confidence, 291 Property page, 367 Cab project type, 320 solution build configuration, 369 creating Smart Device app., 224, 225, 226 Debug settings dialog, 479 locked files, 226 Debug toolbar, 82 Deploy dialog, 224 debugging deployment project templates, 292 .NET Framework and .NET CE 222 history of, 291 additional debugging functionality installingWmdows apps., 291 adding components, 89 Merge Module projects, 316 adding references, 88 Microsoft Data Access Components web references, 89 (MDAC) CE.NET and Pocket PC compared, 234 checking for, 310 dynamic help, 389, 390 no-touch deployment, 327 implementing wizards, 4 79 project types isolated development environments, Setup project type, 293 250 Setup project type, 306 mobile web apps., ASP.NET, 214 Visual Studio (6.0) Installer, 292 Options dialog, 354 Web Setup project type, 323 properties, ACT tool, 267 Windows Installer, 291,306 remote debugging, 85 XCopy deployment, 316 SDK,396 Description, VSDIR file structure, 465 semi-isolated development environments, description pane, object browser, 199 250 design layout Smart Device development, VS.NET, 233 Master-Details web form, 157 tracing add-in methods in debugger, 410 Design mode, VS.NET, 109 web forms, 110 previewing report in, 345 WinForms applications, 80 web form editing mode, 104 additional functionality, 87 Design View Breakpoints window, 82 creating WmForms project, 48 Call Stack window, 83 customizingVS.NET IDE, 363 Command window, 84 designer pane examining values, 84 changing text style and format, 113 Exceptions dialog, 86 HTML validation, 123 Immediate window, 84 reflecting two-way changes, 52 setting breakpoints, 81 Designer Template, 131 stepping through code, 81 web user control, 132 tooltips, 84 desktop applications, internet when app. is running, 85 deployment project template, 293 default installation DestinationOption property Crystal Reports, 329 exporting web report, 34 7 Default Installation Folder, 300 Detach button default property pages, 361 debuggingWinForms apps., 86 548 Ll

Detected Dependencies node Dialog Editor tab, Toolbox window, 31 Setup project type, 313 Dialog Title installation element developer profiles Setup project type, configuring, 300 customizingVS.NET IDE, 354 DialogResult property developer workflow creating About form, 79 migration, 41 Show method, MessageBox, 70 development cycle dircommand customizingVS.NET IDE, 369 GAC contents in command window, 504 performance testing, 256 directories device adapters .NET Framework, 502 designing for mobile devices, 208 Application directory, 508 Mobile web forms adding, 207 ASP.NET directories, 505 device controls aspnet_client directory, 507 Smart Device development, 228 Common Files directory, 508 Device Controls tab, Toolbox window, 31 Custom directory, 508 Device dialog Fonts directory, 508 debugging mobile web apps., 216 FrontPage Extensions directories, 507 device filtering GAC contents in command window, 504 mobile web apps., 142 GetFolderPath method, 509 Device Tools, Options dialog graphics, 500 configuringVS.NET, 354 installation directories, 499 customizingVS.NET IDE, 363 interoperability, 501 device-specific controls language directories, 499 lifecycle, mobile ASP.NET page, 204 Module Retargetable directory, 508 device-specific rendering MSDE,500 mobile web apps., ASP.NET, 142 obj (object) directory, 501 adapters, 205 Program Files directory, 508 DeviceAdapters project directories, 501 lifecycle, mobile ASP.NET page, 204 Special directories, 508 DeviceSpecific control System directory, 508 Mobile controls, ASP.NET, 144 templates, 500 special mobile controls, 213 tools subdirectories, 500 Diagnostics namespace User's directories, 508 modifying Add-In wizard-generated code, VSWebCache directory, 506 409 Web Custom directory, 509 dialog boxes Wmdows directory, 509 Add Reference dialog, 88 wizard overviewVS.NET, 463 Appearance properties, 78 .disco file type, 497 Customize Toolbox dialog, 90 disconnected objects Exceptions dialog, 86 ADO.NET, 149 FormBorderStyle property, 78 DataAdapter objects, 17 4 Inheritance Picker dialog, 80 DataSet object, 160, 181 MessageBox, 68 discovery files modal dialog, 78 Static Discovery File, 497 Processes dialog, 85 DiskFileDestinationOptions object Setup project type exporting web report, 34 7 configuring Custom Dialog controls, Dispose method 303 garbage collector, 51 creating, 302 distributed computing, 148 customizing, 302 distributed transactions, 222 default, 302 DLLfile properties, 303 ASP.NET and CodeBehind file compared, 129 Smart Device WIZard dialog, 223 registering DLL, 313 toolbox, available in, 70 ensuring all files registered, 315 Wmdow Style properties, 78 resource-only DLL, 480 WinForms apps., 67 Runtime Callable Wrapper, 315 ll DEX 549

Dll Hell problem CommandBars object, 448 avoiding, 317 Commands object, 448 DLLPath Documents property, 448 VSDIR file structure, 465 Eventscollection,448 do methods namespace location of, 446 CodeWalker class, 426,431 properties collection, 449 Dock property Solution property, 449 docking controls, 57 SourceControl property, 449 dockable tool windows, 5 SupressUI property, 449 tab docking, 6 Windows property, 449 docking controls, WmForms, 57 DTEobjects document windows, 2 add-ins working with, 421 custornizingVS.NET IDE, 374 add-ins, Visual Studio Item arguments, 376 version differences, 400 MDIMode,3 implementing wizards, 4 75 tab groups, 2, 3 online resources, 446 Documents property dynamic applications DTE interfaces, 448 data access, 147 doFileCodeModel method dynamic help CodeWalker class, 431 ArrayList definition, 390 doFindReplace method customizingVS.NET IDE, 387 modifying Form event handlers, 438 speeding up dynamic help, 357 doFunction XML Help Provider, 388 inserting skeleton XML comment, 431 debugging,389,390 doParameters method, 431 Dynamic Help window, VS.NET IDE, 37 Dynamic Library Tools menu, 12 resource-only DLL, 482 DotNetClient project dynamic tests Windows apps., 312 ACT test results, 270 DotNetClient_Setup DynamicHelp tag Setup project type, 313 XHP document, 389 copying current dependent assembly, 317 XML Help Provider, 389 Dotnetfx redistributable dependency, 309 Dotnetfx.exe file, 308 E dotnetfxredist_x86_enu.msm, 309 e-Load DotNetServer.dll, 316 performance testing, 259 DotNetServer_Package, 318 edit menu, VS.NET IDE, 9 Draco editor Visual SourceSafe, 240 selection in VS.NET, 105 drag and drop method EditPoint class code generated, 159 Property Generator macro, 453 data binding to list control, 187 elements DataGrid control, 159 inserting in HTML mode, 120 stored procedures, 173 viewing methods/properties, 124 Dreamweaver Empty Project project type Dreamweaver.exe icons, 379 creating Smart Device app., 224 passing command line arguments, 376 emulators DropDownList control creating Smart Device app., 225 web form controls, 115, 116 emulator.exe application, 228 DTE (Design Time Environment) invoking manually, 228 macros, Visual Studio, 446 restarting, 227 DTE interfaces shutting down, 227 accessing, 459 debugging mobile web apps., 214 ActiveDocument property, 446 EnableViewState property, 119 ActiveWmdow property, 44 7 encrypted connections Ad dins collection, 44 7 .NET Framework and .NET CF, 222 550 Ll

encryption errors Dotfuscator, 13 error code 2709, 297 security, mobile web apps., 217 highlighting errors in code, 122 Enterprise templates temporary report file not accessible, 348 installation directories, 501 Evaluation Time keywords EnvDTE Automation Model, 421 Crystal Reports terminology, 330 command object, 416 WhilePrintingRecords, 331 commandBar object, 416 event handlers/ events modifying code and text, 431 btnSearch_Click event, 53 EnvDTE CodeModel objects, 427 Connection objects, 166 EnvDTE EditPoint function, 433 DataGrid control, 197 EnvDTE namespace inline code model, 127 applicationObject variable, Connect class, modifying Form event handlers, 438 415 toolbars, 76 Connect.cs file, 408 tracking add-in events and exceptions, DTE interfaces, 446 409 language specific features, 433 WebForml.aspx.cs, 127 import statements, 473 event log, VS.NET IDE, 24 EnvDTE objects Server Explorer, 191 constructing a comment, 431 configuration of properties, 192 GetStartPoint method, 433 event wiring Kind property, 428 CodeBehind file, 130 parameter passed to WalkDTE, 426 Events collection EnvDTE properties DTE interfaces, 448 collections, 427 examinations EnvDTE TextPoint function, 433 exam requirements, 535 EnvDTE.dll examresources,534 version differences, 400 practice tests, 514, 535 environment options dialog preparation, 514 macros, Visual Studio, 445 registration, 513 Environment SDK, 396 study guides, 535 environment settings taking the exam, 514 custornizingVS.NET IDE, 354 test center location, 513 Auto-load changes option, training, 535 359 exceptions custom keywords, 360 .NET Framework and .NET CF, 222 developer profiles, 354 custom classes, Crystal Reports, 350 dynamic help, 357 handling exceptions, ASP. NET, 110 help, 360 incomplete quotation marks, SQL, 170 keyboard shortcuts, 358 modifying exception handler, add-ins, project location, 358 416 Projects pages, 364 tracking add-in events and exceptions, round-tripping, 359 409 source code highlighting, 358 Exceptions dialog start-up behavior, 356 debuggingWmForms apps., 86 Task List tokens, 359 Excludeltem(s) methods Text Editor, 361 SourceControl object, 252 Environment, Options dialog Exec method, Connect class, 409 configuringVS.NET, 353 calling ReplaceCommandlnMenu, 418 error handling default code, 413 Crystal Reports, 350 executing commands with, 413 event log, Server Explorer, 191 tracing add-in methods in debugger, 412 error messages executable projects task list, VS.NET IDE, 35 web projects, 501 error pages, web forms, llO Execute method, IDTWIZard ErrorPage property, llO implementing wizards, 470,474 Ll 551

Export method flashing clock control, ActiveX, 321 exporting web report, 34 7 floatingtoolwindows,5 Extensibility namespace Flow layout, 107 Connect.cs file, 408 FlowLayout property, web forms, 108 extensibility options FolderBrowser Dialog dialog, 71 custornizingVS.NET IDE, 392 font properties add-ins, 393 Tools menu, 112 macros, 393 Font property VS.NET Integration Kit, 395 formatting controls, 54 wizards, 395 FontDialog dialog, 71 external tools Fonts directory, 508 arguments, 376, 377 ForeColor property, 54 custornizingVS.NET IDE, 375 Form Data sample test, ACT, 260 passing command line arguments, 376 form elements External Tools dialog controlling, 53 adding tools, 375 Form event handlers removing tools, 376 MultiLineFindReplace, 438 ext_cm_AfterStartup, 415 form menus, WmForms, 71 ext_cm_Startup,4ll,415 form-based logon methods, ACT, 282 ext_cm_UISetup, 410,411 Forml.cs file, 49 passing variable values to add-in, 415 Format Editor dialog, 337 ext_ConnectMode, 415 Format menu, VS.NET IDE, 11 formatting multiple controls, 55 F FormBorderStyle property, dialogs, 78 Field Explorer window forms customizing reports, 337 CE.NET and Pocket PC compared, 234 Field Validation controls creating additional WmForms, 77 web form controls, 116 how forms work, 50 file menu, VS.NET IDE, 8 mobile device navigation, 210 File Share mode, 507 visual inheritance, 79 custornizingVS.NET IDE, 364 Formula Editor dialog File System Editor, 295 customizing reports, 338 file types, 495, 498 Form_Load event associating apps. with, 304 previewing Untyped reports, 341 source control file types, 248 frame source, 12 File Types editor, 304 Frames menu, VS.NET IDE, 12 FileCodeModel object, 427 Frameset files HTML Page file type, 495 .NET Framework and .NET CF, 221 frequently used members, C# /J# accessing and updating within VS.NET, customizingVS.NET IDE, 362 507 From Web option, Open submenu Solution Explorer, 14 file menu, VS.NET IDE, 9 source control types, 247 FrontPage Extensions Fill method customizingVS.NET IDE, 364 DataAdapter objects, 149 directories, 507 find and replace full screen mode implementing MultiLineFindReplace, 437 customizingVS.NET IDE, 374 multiline find and replace add-in, 434 keyboard shortcut, 374 FindCommand method, 420 FindReplace method G modifying Form event handlers, 438 GAC first pass, Crystal Reports, 330 see Global Assembly Cache (GAC) FIXtoken,359 garbage collector, 51 Flags General property page VSDIR file structure, 465 ACT tool, 266 Flash Certified Developer, 534 customizingVS.NET IDE, 361 552 liND

General tab, Toolbox window, 31 handling exceptions General test properties dialog, ACT, 270 Application_Error event handler, 110 Generate DataSet dialog Try... Catch block, 110 creating DataSet object, 182 Hello World welcome dialog, 300 data controls, WmForms, 65 HelloWorld_Setup.msi file, 306 Generate Dataset option help Data menu, VS.NET IDE, 10 context-sensitive help, 36 Generate method, ICodeGenerator customizingVS.NET IDE, 355, 360 implementing wizards, 475,476 dynamic help, 37 improving wizards, 487 customizingVS.NET IDE, 357 GenerateProperty function IntelliSense, 37 Property~acro,457 managing help collections, 360 GetCodeProvider Help Filter dropdown list, 355 implementing wizards, 477,478 Help Integration SDK, 395 GetEndPoint method Help integration, VS.NET IDE, 36 Property Generator macro, 454 Help menu, VS.NET IDE, 14 GetFolderPath method, 509 history clearing, C#/J# GetPropertyName function customizingVS.NET IDE, 362 Property Generator macro, 452 HKEY_CLASS_ROOT Property~acro, 456 updating system registry, 304 GetStartPoint method HKEY_CURRENT_USER EnvDTE objects, 433 updating system registry, 304 Property Generator macro, 454 HKEY_LOCAL_~CHINE Global Application Class file type, 497 latest version ~DAC installed, 310 Global Assembly Cache (GAC) updating system registry, 304 .NET Framework directories, 503 HKEY_USER command window directory listing, 505 updating system registry, 304 contents in command window, 504 hot keys contents in Wmdows Explorer, 503 see also keyboard shortcuts creating strongly named assemblies, 319 macros, Visual Studio, 444 GAC directory, 504 HrnLcode installing assemblies in, 318 programming code separation, 126 registering components, 385 WebForml.aspx, 127 Global.asax, 103 HT~L controls Global.asax.cs, 103 ASP.NET controls compared, 118 Glyph icon, server controls, 118 Button HrnL control, 117 graphics Runat="Server" property, 117 CE.NET and Pocket PC compared, 234 server controls compared, 117, 118 installation directory, 500 web form controls, ASP.NET, 116 graphs, ACT tool, 278 HrnL Designer, Options dialog graphs report, 268 configuring VS.NET, 354 greater than (>) character customizingVS.NET IDE, 363 debuggingWmForms apps., 84 HT~L document Grid layout, 107 targetSchema property, 109 Grid~ode .htrnl file type, 495 web form editing mode, 104 HT~L mode, 109, 119 GroupBox control, WmForms, 53 addingTextBoxserver control, 119 grouping color properties, 112 Class View, 28 inserting elements, 120 Guid attribute, 4 73 lntelliSense, 109 GuidAttribute attribute Options dialog, 122 Connect class inheritance, 408 web form editing mode, 104 HT~L options, text editor for H customizingVS.NET IDE, 362 HACK token, 359 HT~L Page file type, 495 HandleException event HT~L source code Crystal Reports, 351 VS.NET web form, 97 Ll 553

HTML tab, Toolbox window, 31 Server Explorer, 15 HTMLtable Services Server Control, 18 aligning controls in, 108 Solution Explorer, 14 HTML Validation-Enable HTML validation SQL Server explorer, 16 Options dialog, 122 Start Page, VS.NET IDE, 7 HTTP l.l keep-alive feature Table menu, 12 customizing ACT test scripts, 284 task list, 34 HyperLink control tool windows, 4 web form controls, 115 Toolbox window, 29 Tools menu, 12 versions, 41 110 (file 1/0) Windows section, 13 .NET Framework and .NET CF, 222 XMLmenu, lO .ico file type, 495 IDE integration ICodeGenerator interface Crystal Reports, 329 implementing wizards, 472,475 macros, Visual Studio, 444 Icon Explorer add-in, 417 IDTCommandTarget interface, 401 AddNamedCommand method, 417 Connect class inheritance, 408 calling ReplaceCommandlnMenu, 418 Connect class methods, 409 reloading menu on invoking, 417 IDTExtensibility2 interface Tools menu, VS.NET IDE, 421 add-ins, Visual Studio, 400 Icon file type, 495 COM objects for add-ins, 401 IconResourceid Connect class inheritance, 408 VSDIR file structure, 465 Connect class methods, 409 icons Extensibility namespace, 408 Dreamweaver.exe file, 379 IDTWIZard interface replacing, 299 implementing wizards, 470,474 IDE (integrated development environment), wizard overview VS.NET, 464 2 liS (Internet Information Server) Build menu, 10 bottlenecks, 282 Class View window, 27 installation, 99 context-sensitive help, 36 registering ASP. NET with, 502 customizing, 353 team development, 243 customizing reports, 336 websites for mobile devices, 204 Data Connections, 20 Image Collection Editor, 75 Data menu, 10 Image control, 116 dialogs, 41 special mobile controls, 214 dockable tool windows, 5 Image mobile controls, 142 document windows, 2 properties, 143 Dynamic Help window, 37 ImageButton control, 115 edit menu, 9 ImageList control, 75 Event logs, 24 imaging fllemenu,8 team development, 243 floating tool windows, 5 Immediate mode Format menu, ll switching modes, 85 Frames menu, 12 Immediate window help, 36 debuggingWinForms apps., 84 Help menu, 14 import statements, EnvDTE IntelliSense, 37 implementing wizards, 473 macros manipulating IDE properties, 449 Increment method menus,8 PerformanceCounter class, 23 Microsoft Message Queue, 25 Index method overview of main parts, 1 commandscollection,421 performance monitor (PerfMon), 21 Info Location property Project menu, 10 CodeNamespace class, 428 Properties window, 31 Infragistics NetAdvantage Suite tab, Resource View window, 34 386 554 INDEX

inheritance COM components, 42 Connect class, 408 IDTExtensibility2 interface, 400 visual inheritance, 46, 79 installation directory, 501 Inheritance Picker dialog InteropServices namespace visual inheritance, 80 Connect.cs file, 408 Initialize stage implementingwizards,473 lifecycle, mobile ASP.NET page, 204 invisible controls, 60 InitializeComponent method, 50 IProjectGenerator interface class creating instance of control, 52 implementing wizards, 4 72 wiring events, 130 improving wizards, 483 inline code model, 127 IrDA communication INNERJOIN, 170 .NET Framework and .NET CF, 222 input controls IsltemCheckedOut method mobile controls, 211 SourceControl object, 252, 253 InputPanel class IsltemUnderSCC method CE.NET and Pocket PC compared, 234 SourceControl object, 252, 253 InsertCommand isolated development environments generation of, 175 team development, 250 InsertProperty function ISolutionGenerator interface class PropertyMacro, 456 implementing wizards, 4 72 installation improving wizards, 483 see also deploying projects/ applications IsValidMember function Dotnetfx.exe file, 308 PropertyMacro, 453 implementing wizards, 482 IsValidMemberString function Setup project type, 298 PropertyMacro, 455 installation directories, 499 ItemPager class default, 499 mobile device navigation, 208 graphics, 500 ItemXyz arguments interoperability, 501 external tools, 376 MSDE,500 templates, 500 J Installutil.exe, 502 J# options, text editor for IntelliSense, 37 customizingVS.NET IDE, 361 Complete Word feature, 124 JavaScript control properties, 123 ASP, 95 HTMLmode,109 .js file type, 496 inserting elements in HTML mode, 120 jsc.exe mobile web apps., ASP.NET, 141 compiling projects, 502 Submit HTML button, completing, 125 JScript file type, 496 task list, VS.NET IDE, 35 interface file K Page directive, 127 Key File attribute Interface member, Basic Assembly Information file type, 496 customizingVS.NET IDE, 361 key-value pairs, XML Intermediate Language Assembler connection strings, 164 (ilasm.exe) Keyboard Scheme dropdown list, 355 compiling projects, 502 keyboard shortcuts Internal Help see also hot keys customizingVS.NET IDE, 355 ampersands(&), using, 72 Internet Explorer (IE) customizingVS.NET IDE, 358 Pocket Internet Explorer, 217 Data Connection node, Server Explorer, 161 Internet Information Server debuggingWmForms, 48 see liS full screen mode, 374 interoperability Macro Explorer, 443 .NET Framework and .NET CF, 221 Object Browser, 198 ADO.NET, 149 recording macro, 441 ll DEX 555

running application, 48 logging in Solution build, 10 mobile device user input, 210 toolbox, 29, 150 logical segments keywords presentation layer, 97 custom keywords, 360 Kind property, EnvDTE objects, 428 M machine-wide settings L system registry, 304 Label control machine.config file web form controls, 115 CONFIG directory, 502 Label control, WinForms, 54 mobile web apps., 142 Label mobile controls, 141 Macro Explorer language directories, 499 converting macro into add-in, 462 Languagell1dependence Macromedia Studio MX menu, 381 Crystal Reports, 330 Macromedia Studio MX toolbar, 379 Language property, CodeModel class, 425 macros, 441-462 large projects add-ins compared, 441 customizingVS.NET IDE, 369 converting to add-ins, 459,460 Launch Condition editor similarities with add-ins, 399 .NET Framework version, 308 controlling source code, 449 checking MDAC version, 311 customizingVS.NET IDE, 393 Message property, 308 described, 399,441 Setup project type, 306 DTE interfaces, 446 line separators, Basic using methods and properties of, 446 customizingVS.NET IDE, 361 editing, 444 Link mobile control, 141 environment options dialog, 445 LinkButton control expanded macros menu, 442 web form controls, 115 extending functionality, 460 LinkGroup element hot keys, 444 XHP document, 391 IDE integration, 444 Links node Macro Explorer, 443 XHP document, 391 Macro IDE, 444 list controls Macro Recorder toolbar, 442 ASP.NET, 115 managing, 443 binding DataView objectto, 185 MS Office macros compared, 441 data binding to list control, 187 Property Generator macro, 450 List mobile control, 142 creating, 450 ListBox control New Macro popup menu, 450 web form controls, 116 Private or Protected member Litem element declaration, 451 XHP document, 391 source code, 452 Load last loaded solution behavior purpose, 399 customizingVS.NET IDE, 357 recording, 442 Load stage simple macro, 441 lifecycle, mobileASP.NET page, 204 running, 444 LoadRunner new macro, 459 performance testing, 259 macros working local projects accessing CommandBars object, 448 VS.NET projects, 245 accessing current solution, 449 localization data, 127 accessing currently active window, 447 LocalizedName accessing currently open document, 446 VSDIR file structure, 465 accessing individual documents, 448 Locals window accessing VS.NET windows, 449 debuggingWinForms apps., 84 adding comments, 457 Lock Controls option adding tasks to task list, 459 formatting multiple controls, 56 adding tool button to fire macro, 446 556 Ll

associating user interface object with Server Explorer, 26, 192 command, 448 MessageQueue object, 193 displaying user interface elements, 449 MessageBox class fmding available event, 448 Show method, 68 generating properties, 450 MessageBox prompt manipulating IDE properties, 449 buildingWmdows apps., 69 registering new toolbar button, 448 MessageQueue object, 193 verifying addin available, 447 metadata Main procedure attribute storage, 103 modifying test script, 286 methods MainMenu control Connect class, 408 form menus, 71 static method, 419 editing Menultem names, 72 Microsoft managed objects vision of web development, 93 communicating with COM objects, 313 Microsoft Certification Master-Details web form, 157 see also certification maximum, normal distribution, 276 certification process, 511 MDIMode,3 certification tracks, 512 MDI window mode, 372 examinations, 513 Me window overview, 511 debuggingWinForms apps., 84 Microsoft Certified Application Developer, mean, normal distribution, 276 513,516 median, normal distribution, 276 BizTalk Server exam topics, 524 members pane, 199 Commerce Server topics, 525 Memory -Available Bytes core exams, 516 client performance testing, 281 elective exams, 521 useful performance counters, 282 MCAD Additional Core Exam, 520 Menu control, 71 MCAD Elective Exams, 522 menus SQL Server 2000 exam topics, 522 CE.NET and Pocket PC compared, 234 Web Application exam topics, 518 customizingVS.NET IDE, 378 Wmdows-based exam topics, 517 creating Macromedia Studio MX menu, Microsoft Certified Database Administrator, 381 512,528 creating menus, 380 MCDBA Core Exam Options, 528 naming conventions, 72 MCDBA Elective Exams, 529 rearranging menus, 378 Microsoft Certified Desktop Support WinForms apps., 67 Technician, 512 menus, VS.NET IDE, 8 Microsoft Certified Professional, 512, 515 context menus, 73 choice of core exams, 516 form menus, 71 choice of examination, 515 menu options changes with file, 8 Microsoft Certified Solutions Developer, 513, Merge Cells function 526 Table menu, VS.NET IDE, 12 further training following, 528 Merge Module project, 316-320 MSCD Core Exam, 526 deployment project templates, 293 Solution Architectures exam, 526 installing components, 318 Microsoft Certified Systems Administrator, packaging shared server assemblies, 512,529 317 MCSA Core Client OS Exam Choices, 530 project type summary, 328 MCSA Elective Exams, 530 Setup project type, using in, 317 Microsoft Certified Systems Engineer, 512, message boxes, WmForms, 68 531 Message property MCSA Core Networking System Exams, Launch Condition editor, 308 531 message queues MCSE Core Design Exam Choices, 532 message explorer, 26 MCSE Elective Exam Choices, 532 Microsoft Message Queue, 25 Microsoft Certified Thainer, 511, 512 ll DEX 557

Microsoft Data Access Components Mobile Form mobile control (MDAC) mobile device user input, 211 checking for, 310 toolbox, 141 checking version, 311 Mobile Internet Toolkit, 136 latest version installed, 310 mobile tools Registry Search Settings, 311 Visual Studio development, 203 Microsoft Management Console (MMC), 15 mobile web applications, 136 Microsoft Message Queue (MSMQ), 25 authentication, 219 Microsoft MSDN Download Center, 308 AutoComplete, 141 Microsoft Office Specialist, 513 browser security considerations, 217 Microsoft Office Specialist Master Instructor, CodeBehind file, 138 513 debugging, 214 Microsoft.Office.Core namespace described, 203 Connect.cs file, 408 device characteristics, 142 migration, 40 device filtering, 142 developer workflow, 41 device-specific rendering, 142 settings, 40 encryption, 217 MinimizeBox property feature selectivity, 211 CE.NET and Pocket PC compared, 234 HTML source code, 138 minimum, normal distribution, 276 IntelliSense, 141 Miscellaneous Files container machine.config file, 142 Solution Explorer, 14 mobile capabilities, 142 MIT add-on mobile input controls, 211 Smart Device development, 203 mobile web controls, 141, 142 mobile client development, 203 namespaces, 138 mobile controls, ASP. NET, 211 security, 217,219 Available Device Filters, 144 WI.Fi warning, 217 browsers supported by, 207 Mobile Web Development, 204 data controls, 212 ASP.NET Mobile Framework, 204 defining adapter sets, 207 designing for mobile devices, 208 DeviceSpecific control, 144 navigation, 208 mobile input controls, 211 Mobile web forms, 205 mobile-specific controls, 213 Mobile Web Forms tab, Toolbox, 31 templates, 145 mobile/wireless technology, 136 toolbox controls, 115, 140 MobileLink Calendar, 142 mobile device navigation, 209 Command, 141 modal dialog Image, 142 creating additional WmForms, 78 Label, 141 Module Retargetable directory, 508 Link, 141 MSDE installation directory, 500 List, 142 MSDN Automation Samples page, 439 Mobile Form, 141 MSDN online help, 439 ObjectList, 142 MSSCCI (Microsoft Source Control PhoneCall, 141 Command Interface), 250 SelectionList, 142 MultiLineFindReplace project TextBox, 141 Connect class changes, 436 TextView, 141, 142 implementing Find and Replace, 437 validation controls, 212 main dialog, 436 mobile devices multiline find and replace add-in, 434,435 configuring VS.NET, 354 solution, 435 designing for, 208 Multiple Configurations option input considerations, 210 Property page, web apps., 367 device manufacturers, 206 multiple developers navigation, 208 customizingVS.NET IDE, 369 security, mobile web apps., 217 multiple tier systems websites, 204, 208 web development, 94 558 "''NDEX

multithreaded programming model Bootstrapper, installing with, 309 .NET Framework and .NET CE 221 COM interop service, 313 MustOverride member, Basic Community Starter Kit, 147 customizingVS.NET IDE, 361 correct version, 308 MxDataGrid control data access, 148 configuration of properties, 188 data providers, 149 importingASP.NETWeb Matrix project deploying projects/ apps., 307 controls, 188 different version directories, 502 My Profile tab, Start Page, 7 Framework files, 502 customizingVS.NET IDE, 354 installing apps. from command line, MySQL 4 Professional, 534 502 MySQL Core certification, 534 language options, 94 objects, 196 N registering an assembly, 99 n-tier architecture, 94 Runtime Callable Wrapper, 315 data access, .NET, 148 Wmdows Installer 2.0, 291 presentation layer, 95 .NET Framework directories, 502 web development, 94 ASP.NETClientFiles directory, 503 namespaces CONFIG directory, 502 CodeBehind class, 129 GlobalAssemblyCache (GAC), 503 Connect class namespaces, 407 machine.config file, 502 Connect.cs file, 407 Temporary ASP.NET Files, 503 EnvDTE namespace, 408 .NET Framework SDK Extensibility, 408 tools subdirectories, 500 Microsoft. Office. Core namespace, 408 .NET Mobile Framework, 204 mobile web apps., ASP.NET, 138 .NET Runtime, 307 Smart Device development, VS.NET, checking for, 306 232 Runtime Callable Wrapper, 315 System.Runtime.InteropServices Setup integration, 310 namespace, 408 netsetup.exe naming conventions Visual SourceSafe, 238 installing assemblies in GAC, 318 Network Interface - Bytes Total menus, 72 client performance testing, 281 team development, 248 network latency Native-only Pipe semi-isolated development environments, remote debugging, 85 249 Nativelmages directory New Macro popup menu GAC contents in command window, 504 Property Generator macro, 450 navigation New Project dialog designing for mobile devices, 208 converting macro into add-in, 461 .NET class libraries creatingWmForms project, 47 References folder, 49 New project options, 39 .NET Compact Framework (CF) New Project wizard .NET Framework compared, 220, 221 MultiLineFindReplace project, 435 assemblies, 221 New Test wizard Common Language Runtime, 221 ACT tool, 272 emulator, controls lining up, 230 customizing test scripts, 283 file formats, 221 newsgroups, 352 Smart Device development, 220, 230 No Tool window layout .NET Data Provider customizingVS.NET IDE, 356 see data providers, .NET no-touch deployment, 46,327 .NET Framework Nongraphical Application project type %SystemRoot%, 502 CE.NET and Pocket PC compared, 235 .NET CF compared, 220, 221 creating Smart Device app., 224 ADO.NET, 149 nongraphical controls, 60 Assembly, 95 normal distribution, 276 INDEX 559

0 Options dialog obj (object) directory configuration options, 353 web projects, 501 HTML mode, 122 Object Browser Options tab, Customize dialog keyboard shortcut, 198 configuring VS.NET, 354 panes, 199 Oracle Certified Associate (OCA), 533 Server Explorer, 198 Oracle Certified Master (OCM), 533 Object class Oracle Certified Professional (OCP), 533 message explorer, 28 OracleCommand object, 161, 167 Objecilist mobile control OracleConnection object, 161, 163 mobile data controls, 212 OracleDataAdapter object, 161 mobile device navigation, 208, 209 ordering controls, WinForms, 58 custom pagination, 208 outlining mode, Basic, 361 MobileLink, 209 outlining mode, C#/J#, 362 ObjectList icon, 209 outlining mode, CIC++, 362 toolbox, VS.NET, 142 Output File (C#) objects, .NET Framework, 196 Setup project type, 296 objects pane, Object Browser, 199 Output Name property OdbcCommand object, 161, 167 Setup project type, 296 OdbcConnection object, 161, 163 overview summary OdbcDataAdapter object, 161 ACT test results, 268 Office user interface objects, 408 OLE DB Provider p data access, .NET, 162 Package Files option OleDB controls, WinForms, 63 deploying projects/apps., 307 OleDbCommand object, 160, 167 Page directive OleDbConnection object, 160, 163 code behind approach, 127 OleDbDataAdapter object, 160 page layout, 106 OnAddlnsUpdate method, 409 PageSetupDialog dialog, 71 OnBeginShutdown method, 409 Page_Load event handler tracing add-in methods in debugger, 412 previewing Untyped Reports, 345 OnConnection method, 408, 415 pagination, mobile devices changing, 418 ASP.NET page lifecycle, 205 passing variable values to add-in, 415 custom pagination, 208 tracing add-in methods in debugger, 410 data controls, 213 wizard-generated code, 419 navigation, 208 OnDisconnection method, 408 Panel control tracing add-in methods in debugger, 412 web form controls, 116 Online Resources tab panels Start Page, VS.NET IDE, 7 mobile device navigation, 210 OnLoad method parameter collection tool, 170 overriding, 204 viewing collection, 171 OnStartupComplete method, 409 parameterized queries tracing add-in methods in debugger, 411 Oracle, 172 OpenFileDialog control performance, 172 previewing Untyped reports, 341 Query Builder, VS.NET, 170 OpenFileDialog dialog, 71 creation of, 170 operating systems (un)named parameters, SQL, 172 team development, 243 passes, Crystal Reports, 330 optimistic concurrency Password textbox type data controls, WinForms, 64 security, mobile web apps., 219 viewing data, 178 Patterns and Practices website, 41 option files .pdb file type, 498 source control file types, 248 percentile, normal distribution, 276 Option Strict PerfMon customizingVS.NET IDE, 364 see performance monitor 560 INDEX

performance pop-up statement completion, bottlenecks, 281 HTML/XML client bottleneck, 271 customizingVS.NET IDE, 363 client testing, 280 portable executable (PE) files improving, 281 .NET Framework and .NET CF, 221 Memory- Available Bytes, 281 PostBack, web pages, 118 Network Interface- Bytes Total, 281 practice tests, examinations, 514, 535 custornizingVS.NET IDE, 364 PreRender stage dynamic help, 357 lifecycle, mobile ASP.NET page, 205 HTML or server controls, 118 mobile device navigation, 208 network statistics, ACT, 27 4 presentation files parameterized queries, 172 CodeBehind file, 96 performance testing, 256 Web Forms file type, 496 server performance, 271 presentation layer, 95 stored procedures, T-SQL, 172 logical segments, 97 testing numbers of connections, 279 n-tier architecture, 95 web server system resources, 281 web development, 94, 95 performance counter icon, 21 Preview Data dialog performance counters DataAdapter objects, 180 ACT tool, 280, 281 Preview Data option, Data menu, 11 Memory- Available Bytes, 282 Preview SQL script button, 179 MSDN article, 282 PrintDialog dialog, 71 performance monitor, 21 PrintPreviewDialog dialog, 71 performance counter icon, 21 PrintToPrinter method, ReportDocument PerformanceCounter class, 22 printing without previewing, 342 Server Explorer, 194 private method performance testing, 256 creating, 68 .NET Framework and .NET CF, 222 processes ACT tool, 257 improving client performance, 281 development cycle, 256 Processes dialog e-Load, 259 attaching to other processes, 85 LoadRunner, 259 debugging mobile web apps., 215 Rational TeamTest, 259 debugging running apps., 85 Web Application Stress tool, 257 ProductName property Web Performance Trainer, 259 Setup project type, configuring, 300 PerformanceCounter class/ object Profile dropdown list, 355 creation, 195 Progld attribute Increment method, 23 Connect class inheritance, 408 object listing, 194 Program Database file type, 498 performance monitoring, 22, 194 Program Files directory, 508 properties, 22 Project configurations PerformSearch method customizingVS.NET IDE, 364 creating private method, 68 behaviors, 356 persistence, web pages, 118 custom configurations, 368 PhoneCall mobile control language-specific options, 368 special mobile controls, 213 Web app. configurations, 366 toolbox, VS.NET, 141 Project Dependencies Pocket Internet Explorer Solution Explorer, 301 security, mobile web apps., 217 Project Dependencies dialog Pocket PC platform build orders, 371 creating Smart Device app., 223 project deployment PocketPC emulator see deploying projects/ applications creating Smart Device app., 225 project directories, 501 debugging mobile web apps., 216 Project file type, 495, 498 PocketPCs source control file types, 248 security, mobile web apps., 217 project files, 100,491 "'INDEX 561 project location customizingVS.NET IDE, 366, 367 customizingVS.NET IDE, 358 Debug option, 367 Project menu, VS.NET IDE, 10 Multiple Configurations option, 367 Project Output property Release option, 367 Setup project type, 297 language default property pages, 361 Project Properties dialog, 365 PropertyMacro Project References extending, 457 source control systems, 246 adding comments, 457,458 Project Type Conversion Notification dialog, 42 adding tasks to task list, 459 project types, 491,494 GenerateProperty function, 457 Cab project type, 320 GetPropertyName function, 456 Merge Module projects, 316 InsertProperty function, 456 Setup project type, 293 IsValidMember function, 453 Smart Device development, 224 IsValidMemberString function, 455 Web Setup project type, 323 Property Generator macro, 452 ProjectGeneratorFactory class proxy servers implementingwizards,472 ACT General property page, 266 ProjectltemsTemplatePath stress testing, 266 implementing wizards, 4 77 Pull Model, Crystal Reports, 332 Projects tab, Start Page, 7 Push Model, Crystal Reports, 333 Projects, Options dialog configuring VS.NET, 354 0 customizingVS.NET IDE, 364 qualified assembly name projects, VS.NET, 39 function returning, 312 auto generating files, 39 Query Builder common files problem, 245 CommandText, setting, 169 creating new project, 100 data controls, WinForms, 64 creatingWinForms project, 47 displaying query in CommandText, 171 handling references, 246 parameter collection tool, 170 New project options, 39 parameter collections, 170 project types, 245 parameterized queries, 170 Solution Explorer, 14 showing latest query, 172 team development, 243, 245 query statement web reference classes, 24 7 defining for Command objects, 168 ProjectXyz arguments Query Type, DataAdapter, 177 external tools, 377 QueryStatus method, Connect class, 409 properties collection default code, 413 DTE interfaces, 449 indicating add-in availability, 413 properties window no open solution, 423 changing page layout, 106 open solution detected, 424 Connection object events, 166 tracing add-in methods in debugger, methods and properties, adjusting, 196 411 Server Explorer, 196 question mark (?) character Properties window, 31 debuggingWmForms apps., 84 alphabetical order, 32 Quick Info ToolTips, CIC++, 362 ordered by type, 33 Services Server Control, 19 R WmForms controls, 52 Radio Button control, web forms, 116 properties, overview summary RadioButtonList control, web forms, 116 ACT test results, 269 Range Validator control Property Generator macro, 450 mobile validation controls, 212 Property option, Context menu, 105 Rapid Application Development (RAD) tool, Property page, web applications 190 Configuration dropdown list Rational TeamTest Active option, 367 performance testing, 259 All Configurations option, 367 RCW (Runtime-Callable Wrapper), 400 562 Ll

recording macro previewing Untyped reports, 341 keyboard shortcuts, 441 PrintToPrinter method, 342 red exclamation point ReportDocument class/ component Solution Explorer, 15 Crystal Designer Reference dialog creating reports, 333 .NET Compact Framework, 231 Crystal Reports, 340 references adding,344 handling in team development, 245 binding reports, 332 Web Services references, 247 binding to viewer, 340 References folder error handling, 350 Solution Explorer, 49 reports Reflection creating as web services, 348 .NET Framework and .NET CF, 222 ReportSource property reformatting code in Basic adding ReportDocument component, customizingVS.NET IDE, 361 344 regasm calling DataBind method after manually implementing wizards, 473 setting,346 #region blocks, collapsing, C#/J# previewing Untyped Reports, 346 customizingVS.NET IDE, 362 Request Information section, ACT, 275 Registry Editor Request Performance section, ACT, 275 changing source control packages, 251 requests, ACT tool, 275 Setup project type, 304 number of connections, 272 system registry entries, 304 report test results, 268 registry server entry request performance, 277 implementing wizards, 473 Response time distribution graph, 278 RegKey property TTFB statistics, 277 MDAC Registry Search Settings, 311 Required Field Validator control regsvr32.exe command mobile validation controls, 212 registering an assembly, 99 Resource file, 495 Regular Expression Validator control visibility of file, 127 mobile validation controls, 212 Resource View window, 34 Release directory resource-only DLL project directories, 501 Wm32 resources, wizards, 480, 481 Release option, Configuration dropdown resources server Property page, web apps., 367 team development, 243 solution build configuration, 369 Response Codes, ACT, 275 RelPathName, VSZ file Response Codes section, ACT, 275 VSDIR file structure, 464 response time remote debugging, 85 web app. performance, 256 Remoting Response time distribution graph .NET Framework and .NET CF, 222 request performance, ACT, 278 RemovePreviousVersions property .resx file type, 495 Setup project type, 298 Rich controls, ASP.NET, 115 Render stage Robots. txt file lifecycle, mobile ASP.NET page, 205 search engines, 266 Repeater control Root property web form controls, 116 MDAC Registry Search Settings, 311 ReplaceCommandinMenu method, 418, 419 round-tripping report designer customizingVS.NET IDE, 359 customizing reports, 336 RPS (requests per second), 272 Report Expert, Crystal Designer, 334 .rpt file type, 495 creating draft reports, 336 Run method, Application class customizing reports, 336 WinForms apps., 50 report writing tools, 329 Runat="Server" property ReportDocument class HTML controls, 117 Crystal Reports terminology, 332 Runtime Callable Wrapper (RCW), 315 exporting web report, 347 Runtime, .NET Framework, 307 Ll 563 s configuring VS.NET, 354 SaveFileDialog dialog, 71 Data Connection node, 161 scalability Data Connections, 20 web app. performance, 256 data source connectivity, 163 scope described, 190 debuggingWinForms apps., 84 eventlogs,24,191 script code message queues, 26, 192 script-based wizards, 468 Microsoft Management console, 15 script files, 496 Microsoft Message Queue, 25 script-based wizards,466 Object Browser, 198 Add New item dialog, 467 performance monitoring, 21, 194 AddFileToVSProject, 470 properties window, 31, 196 integrating into VS.NET, 466 Resource View window, 34 script code, 468 Service states, 18 scripts directory, 468 Services Server Control, 18 VSDIR file, 467 SQL Server explorer, 16 VSZ file, 467 task list, 34 scripting engine Toolbox window, 29 script-based wizards, 466 Server library application scripts directory dependent assemblies, 312 script-based wizards, 468 server-side processing SDEadd-on inline code model, 127 Smart Device development, VS.NET, 203 servers SDK directory team development, 243 tools subdirectories, 500 Service states search engines Server Explorer, 18 Robots. txt file, 266 Services Server Control, 18 second pass, Crystal Reports, 330 Properties window, 19 security Server Explorer, 18 mobile web apps.,ASP.NET,217,219 session state Visual Source Safe, 238 security, mobile web apps., 219 web_hightrust.config, 503 Set Page for Frame option web_notrust.config, 503 Frames menu, 12 SelectCommand Setup project dialogs generation of, 175 Checkbox properties, 303 SelectedValue property Setup project type, 293-315 web form controls, 116 .NET Framework runtime integration, 310 Selection only behavior Add Project Output Group dialog, 295 customizingVS.NET IDE, 357 Add-In wizard building,407 Selectionllst mobile control additional features, 298 mobile input controls, 211 application deployment, 306 toolbox, VS.NET, 142 app. project, link to, 301 self-repairing applications ComClient_Setup,314 Windows Installer, 292 Configuration dropdown box, 297 semi-isolated environments configuration, note of caution, 297 team development, 249 creating and using, 315 serialization dependent assemblies .NET Framework and .NET CE 222 applications with, 311 server controls, 118 Detected Dependencies node, 313 Glyph icon, 118 detecting dependencies, 313 HTML controls compared, 117, 118 deployment project templates, 293 web forms, 97 dialog boxes server environment creating, 302 team development, 243 customizing, 302 Server Explorer, 15, 190 default, 302 Class View window, 27 properties, 303 Component Designer, 200 DotNetClient_Setup, 313 564 Ll

dotnetfxredist_x86_enu.msm, 309 site maps editors, 301 mobile device navigation, 208 Custom Action editor, 305 .sln file type, 497 File Types editor, 304 Smart Device applications, 203, 223 Launch Condition Editor, 306 Smart Device controls, 229 Registry Editor, 304 Smart Device development, 220 User Interface Editor, 302 .NET Compact Framework, 220, 230 File System Editor, opening, 295 creating application, 223 Hello World welcome dialog, 300 data access, 232 installation, 298 debugging, 233 configurable installation elements, 300 described, 203 creating installer, 294 device controls, 228 introduction, 293 Pocket PC platform, 223 Merge Module project in, using, 317 project types, 224 modifying settings, 299 Wmdows CE platform, 223 Output File (C#), 296 Wmdows Mobile Support, installing, 220 Output Name property, 296 Smart Device Extensions (SDE), 363 Project Output property, 297 Smart Device project references RemovePreviousVersions property, 298 .NET Compact Framework, 231 Setup.exe file, 298 Smart Device toolbox, 229 shortcuts Smart Device WIZard dialog., 223 creating, 299 SmartNav, aspnet_client directory, 507 replacing icon, 299 Snippets summary, 328 customizingVS.NET IDE, 383 system registry, updating, 304 Socket request time-out, ACT, 267 testing on operating systems, 298 SolutionArchitectures exam, MCSD,526 toolbar, 295 solution build configuration web oriented project, 325 customizingVS.NET IDE, 368 when not required, 315 keyboard shortcuts, 10 Wmdows app. example, 293 Solution Explorer, 14,96 Windows Installer package, creating, 313 .NET class libraries, 49 Setup Wizard active project, 14 deployment project template, 293 Add Reference dialog, 88 Setup.exe bootstrapper, 310 Connect class namespaces, 407 Setup.exe file, 298, 306 Connection objects, 163 Setup.ini file, 306 Data Connection, 161 Shapes class, 422 Data Form WIZard, 152 Shapes project, 422 DataSet object, creating, 184 shared server assemblies, 317 editor selection, 105 shortcut, Setup project creating, 299 file description, 103 replacing the icon, 299 grayed-out icon files, 15 Show All File(s) button, 102 Project Dependencies, 301 Solution Explorer, 127 red exclamation point, 15 Show All Tabs, Toolbox, 31 References folder, 49 Show empty environment behavior, 357 Show All Files button, 127 Show New Project dialog behavior, 357 tool window, inside, 373 Show Open Project dialog behavior, 357 viewing test results, 289 Show Start Page behavior, 357 visual inheritance, 79 Show method, MessageBox web form, adding new, 104 building Windows apps., 68 WinForms project, creating, 48 settings, 69 WmForms, creating additional, 77 ShowDialog method Solution file type, 497 About form, 79 solution files implementing wizards, 4 75 source control file types, 248 ShowUI method, ICodeGenerator Solution property, DTE interfaces, 449 implementingwizards,475 Solution User Options file type, 498 INDEX 565

SolutionGenerator Factory class SqlDataSource control, 187 implementingwizards,472 configuration of properties, 188 solutions, VS.NET, 39, 40 Web Matrix data access, 187 creating WmForms project Web Matrix project controls, 188 automatically generated files, 49 SqlParameter Collection Editor, 171 source control systems, 244 inputting values directly, 173 team development, 243, 244 SRassembly SolutionXyz arguments .NET Framework and .NET CF, 222 external tools, 377 standard deviation, normal distribution, 277 sorting Start Page, VS.NET IDE, 7 Class View, 28 customizing, 355 SortPriority, VSDIR file structure, 465 . My Profile tab, 7 source code Online Resources tab, 7 highlighting, 358 Projects tab, 7 Property Generator macro, 452 start-up behavior source control, 238-242 customizingVS.NET IDE, 356 automation macros, 252 Startup dropdown list, 356 checking out work with VSS, 241 state common files problem, 245 ASP.NET state service, 502 described, 237 Static Discovery File file type, 497 file types, 247,248 static methods, 419 handling in team development, 24 7 statistical terms planning, 250 mean,276 references, handling, 246 median,276 common problem explained, 245 normal distribution, 276 Project References, 246 percentile, 276 source control packages, 250, 251 standard deviation, 277 VS.NET solutions, 244 stepping through code Source Control, Options dialog, 353 debuggingWmForms apps., 81 source pasting, C#/J# Breakpoints window, 82 customizingVS.NET IDE, 362 Call Stack window, 83 Source Safe Login dialog, 239 Stored Procedure Command1)rpe, 167 SourceControl object stored procedures CheckOutltem(s) methods, 252 Data Adapter Configuration WIZard, 178 Excludeltem(s) methods, 252 drag and drop method, 173 IsltemCheckedOut method, 252, 253 executing, 172 IsltemUnderSCC method, 252, 253 performance, 172 methods, 252 querying Customer Orders information, 172 SourceControl property, DTE interfaces, 449 SQL Server Explorer, 17 SourceSafe Transact-SQL, 172 see Visual SourceSafe stress testing Special directories, 508 ACT tool, 257 Setup and Deployment projects, 509 proxy servers, 266 SQLServer strong passwords team development, 243 security, mobile web apps., 219 SQL Server CE databases strongly named assemblies .NET Framework and .NET CF, 222 creating, 318 SQL Server Explorer, 16 detecting, 319 DataAdapterWIZard, 16 Strongly1)rped Crystal Reports, 331 stored procedures, 17 Student Wmdow Layout SqlCommand object, 160, 167 customizingVS.NET IDE, 356 SqlConnection object, 160, 163 Students tables, 151 data controls, WmForms, 61 study guides, examinations, 535 Web and Windows Form apps., 163 style rules, adding , 135 SqlDataAdapter object, 160 Stylesheet control data controls, WmForms, 63 special mobile controls, 214 566 "''NDEX

StyleSheet file type, 495 temp directory Submit HTML button GAC contents in command window, 504 IntelliSense completing, 125 templates SuggestedBaseName DesignerTemplate, 131 VSDIR file structure, 465 installation directory, 500 .suo file type, 498 mobile controls, 145 support directories, ASP.NET, 505 wizards, 470 SupressUI property, DTE interfaces, 449 temporary ASP.NET files, 503, 505 switch statement "temporary report file not accessible" error, string values returned, 77 348 System directory, 508 Terminate button system registry, 304 debuggingWmForms apps., 86 see also Registry Editor Test error counts, ACT, 273 System.Web.dll Test properties, ACT, 270 Global Assembly Cache, 503 Test results summary, ACT, 268, 272 %SystemRoot%, .NET Framework, 502 Test run graph, ACT, 269 Global Assembly Cache, 503 test scripts, 284 test tracing properties, ACT, 267 T test users, ACT, 283 Table menu, VS.NET IDE, 12 Test Wizard, ACT, 272 TableDirect CommandType, 167 TestFiles sample test, ACT, 260 tables testing customization, 156 client, 280 relationships between, 155 cookies, 283 INNER JOIN, 170 customizing test scripts, 283 Tabs property page, 361 different numbers of connections, 279 tabs/tab controls network statistics, ACT, 27 4 CE.NET and Pocket PC compared, 234 performance testing, 256 customizingVS.NET IDE, 385 Setup project type, 298 Show All Tabs, Toolbox window, 31 Text CommandType, 167 tab docking, tool windows, 6 text cursor, 453 tab groups, 2, 3 Text Editor, Options dialog tab order, WinForms controls, 59, 60 configuringVS.NET, 353 tabbed window mode, 372 customizingVS.NET IDE, 361 Tablndex, 59 Basic options, 361 targetSchema property, web forms, 109 C# options, 361 TargetXyz arguments CIC++ options, 362 external tools, 376 HTML options, 362 task list, VS.NET IDE, 34 J# options, 361 Task list tokens, 359 XML options, 362 team development, 237 Text file type, 495 environment, 242 Text Mode handling references, 245 .cs file, 127 isolated development environments, .vb file, 127 250 CodeBehind file, 126 naming conventions, 248 HTML code separation, 126 projects, 245 web form editing mode, 104 semi-isolated environments, 249 TextBox control, WmForms, 115 server environment, 243 controlling form elements, 53 solutions, 244 TextBox mobile control source control, 238 mobile input controls, 211 source control file types, 247 toolbox, VS.NET, 141 strategy, 242 TextBox server control web forms, 249 adding in HTML mode, 119 workstations, 243 TextPoint object tek-tips.com, 352 GetStartPoint method, 433 Ll 567

TextView mobile control tools mobile data controls, 212 mobile tools, 203 toolbox, VS.NET, 141, 142 subdirectories, 500 third-party control tool windows, VS.NET IDE adding reference to, 189 Auto Hide option, 6 This window customizingVS.NET IDE, 372 debuggingWmForms apps., 84 docking,5,373 Timer class, 222 floating tool windows, 5 tmp directory laying out, 4 GAC contents in command window, 504 Tools menu, VS.NET, 12 TODO token, 359 Add-In Manager, using, 412 ToolBar control, 75 add-ins added to, 411 ToolBarButton Collection Editor, 75 color properties, 112 toolbars configuration of automatic formatting, 126 changing toolbars, 377 Customize dialog customizingVS.NET IDE, 377 configuration options, 354 adding external tools, 379 customizingVS.NET IDE creating Macromedia Studio MX adding external tools, 379 toolbar, 379 Dotfuscator, 12 creating toolbars, 378 font properties, 112 docking toolbars, 378 Icon Explorer add-in, 421 removing toolbars, 378 Options dialog event handling, 76 configuration options, 353 Macro Recorder toolbar, 442 tooltips Setup project type, 295 debuggingWinForms apps., 84 WinForms apps., 67,74 trace information Toolbars tab, Customize dialog debugging web forms, 110 configuring VS.NET, 354 Track Active Item, Solution Explorer, 15 Toolbox window, VS.NET IDE, 29, 30 training, examinations, 535 Customize Toolbox dialog, 90 Transact-SQL (T-SQL) keyboard shortcuts, 29 stored procedures, 172 Show All Tabs, 31 transition to VS.NET WmForms controls, 51 customizingVS.NET IDE, 355 toolbox, VS.NET, 114,383 Try... Catch block adding COM components to, 385 handling exceptions, 110 creating DataSet object, 184 TTFB (time to first byte), 273 CrystalReportViewer control, 340 TTFB statistics customizingVS.NET IDE, 382 requests, ACT tool, 277 Infragistics NetAdvantage Suite tab, 386 1\vo-Pass Processing, Crystal Reports, 330 managing controls, 384 two-tier architecture manipulating tabs, 385 web development, 94 Snippets, 383 .txt file type, 495 data components, 159, 161 type library data options, 61 COM objects for add-ins, 401 Data tab, 159 Typed Reports dialog boxes available, 70 Crystal Reports, 329 HTML controls, 116 keyboard shortcut, 150 u List controls, ASP.NET, 115 UI controls, WinForms, 60 menu headings, 114 UMLdiagram mobile controls, ASP.NET, 115, 140 wizards, 4 71 ReportDocumentcomponent,340 UNDONE token, 359 Rich controls, ASP.NET, 115 uniform resource identifier (URI) Smart Device toolbox, 229 targetSchema property, 109 Validation controls, ASP. NET, 115 Unload stage Web Form controls, ASP.NET, 115 lifecycle, mobile ASP.NET page, 205 568 liND

unmanaged code viewing data COM objects for add-ins, 400 optimistic concurrency, 178 UnresolvedMergeConflict token, 359 viewstate Untyped Reports security, mobile web apps., 218 Crystal Reports, 330 ViewState property, web pages, 119 previewing, 341,345 Visual Basic 6 window layout, 356 terminology, 331 Visual C++ 6 window layout, 356 UpdateCommand, VS.NET, 175 Visual C++ Project dialog, 480 UrlBehavior property visual inheritance, 79 Web Services references, 24 7 introduction, 46 User Controls Visual SourceSafe adding to web form, 98 Check Out dialog, 241 creating, 97 Check Out Exclusive command, 242 file type, 497 Draco, 240 user directories, 508 file menu options, 239 user groups, ACT tool, 282 installing, 238 user interface design integration, 353 cascading style sheets, 133 macros controlling source code, 449 User Interface Editor merging on check-in, 241 Setup project type, 302 netsetup.exe, 238 user settings security, 238 system registry, 304 source control, 238 users team development, 243 ACT tool, 282 Visual Studio (6.0) Installer test users, 283 project deployment, 292 web app. performance, 256 Visual Studio .NET DTE, 399 Visual Studio .NET IDE v see IDE Validate XML Data option Visual Studio .NET Integration Kit, 395, 396 XML menu, VS.NET IDE, 10 Visual Studio Analyzer integration, 354 validation controls, ASP.NET Visual Studio Default window layout, 356 mobile controls, 212 Visual Studio environment toolbox, VS.NET, 115 report writing tools, 329 validation schema, 109 Visual Studio Project User Options file type, Validation Summary control 498 mobile validation controls, 212 vsCMLanguageCSharp enumeration, 425 validation, HTML/XML vsCommandExecOption enumeration, 413 customizingVS.NET IDE, 363 vsCommandStatus flags, 414 Value property VSDIRfile MDAC Registry Search Settings, 311 file structure, 464, 465 .vb file type, 495, 496 flag values, 466 Text Mode, 127 installing wizards, 482 vbc command line compiler, 480 script-based wizards, 467 vbc.exe wizard overview VS.NET, 464 compiling projects, 502 VSDIRFLAG_XYX flags, 466 .vbproj file types, 498 vsFindOptions enumerations, EnvDTE .vbs file type, 496 modifying Form event handlers, 438 VBScript VSLangProj assembly ASP, 95 implementing wizards, 4 77 ASP.NET,42 VSWebCache directory, 506 customizing ACT test scripts, 284 VSZfile VBScript file type, 496 improving wizards, 487 VC++ Build page, 364 installing wizards, 482 VC++ Directories tab, 364 RelPathName, VSDIR file structure, 464 version, checking script-based wizards, 467 deploying projects/ apps., 307 wizard overviewVS.NET, 464 "'INDEX 569 w RadioButtonlist control, 116 Walk methods, CodeModelWalker, 426 Repeater control, ll6 Walk:Class method, 429 SelectedValue property, 116 Walklnterface method compared, 430 TextBox control, ll5 WalkDTE method, 425 toolbox, VS.NET, 115 parameter passed to, 426 Web Form document WalkFunction method, 431 targetSchema property, 109 Walklnterface method, 429 web forms Walk:Class method compared, 430 absolute positioning, 107 W~amespacesmethod,429 aligning controls in HTML table, 107 WalkProjects method without HTML table, 108 EnvDTE properties, 427 Complete Word feature, enabling, 124 Watch windows debugging, 110 debuggingWinForms apps., 84 Design Mode, 104 Web application configurations designing in VS.NET, 106 customizingVS.NET IDE, 366 documentproperties,105 web application development, 93 editing modes, 104 ASP (Active Server Pages), 95 error pages, llO ASP.NET, 95 FlowLayout property, 108 presentation layer, 95 Grid Mode, 104 Web Application Stress tool (WAS) HTML source code, 97 performance testing, 257 Mobile web forms, 205 web application template, ASP.NET, 98 performance, 118 web applications Properties window, 110 cascading style sheets, 133 targetSchema property, 109 customizingVS.NET IDE, 366 team development, 249 deploying, 323 TextBox control, insertion of, 123 performance requirements, 256 trace information, 110 Property page, 366 viewing content of, 128 XCopy deployment, 323 Web Form Designer generated code, 128 Web Bootstrapper Settings dialog, 325 Web Forms file type, 496 Web Control library project type, 494 Web Forms tab, Toolbox, 31 Web Custom directory, 509 Web Matrix, 121 web development data access component, 187 .NET Framework, 94 web pages ASP.NET web app. template, 98 EnableViewState property, 119 isolated development environments, 250 persistence, ll8 Mobile Web Development, 204 PostBack, ll8 n-tier architecture, 94 ViewState property, 119 web form controls, ASP.NET Web Performance lJainer, 259 Button control, ll5 web projects CheckBox control, ll6 class-library/executable projects, 501 CheckBoxlist control, 116 project directories, 501 DataGrid control, 116 VS.NET projects, 245 Datalist control, 116 web reference classes, 247 DropDownlist control, 115, ll6 web references Field Validation controls, ll6 adding Web Reference, 349 HTML controls, 116 debugging functionality, 89 Hyperlink control, 115 web resources Image control, 116 Business Objects, 351 ImageButton control, 115 Crystal Reports, 352 Label control, 115 newsgroups, 352 LinkButton control, 115 tek-tips.com, 352 IistBox control, 116 Web Server Connection method, 364 Panel control, ll6 web server system resources, 281 RadioButton control, ll6 Web Service file type, 496 570 INDEX

web services Windows Control Library project type, 492 creating reports as, 348 Windows directory, 509 creatingWSDLhelp,502 Wmdows DNA, 245 Crystal Reports, 330 Wmdows Explorer team development, 243 GAC contents, 503 Web Services references Wmdows Forms team development, 247 .NET Framework and .NET CE 223 Web Settings page Wmdows Forms Designer customizingVS.NET IDE, 364 generated code region, 50 Web Setup project type, 323-326 Options dialog, 354 deploying ClockControl_Web, 324 Wmdows Forms tab, Toolbox, 31 deploying installation files with, 326 Wmdows Installer deployment project templates, 293 Bootstrapper, 306,307,311 Wmdows installation packages, 327 deploying projects/apps., 291, 292, 306 web user control self-repairing apps., 292 CodeBehind file, 131 Windows Mobile Developer PowerToys, 220 Designer Template, 132 Wmdows Mobile Support, 220 Web.Config file, 103 Wmdows property connection strings, 164 docking control settings, 57 defining adapter sets, 207 DTE interfaces, 449 WebControls class Wmdows Script Host file type, 496 mobile validation controls, 212 Wmdows section, VS.NET IDE, 13 WebForm1 files, 103, 127 Wmdows Service project type, 494 building ASP.NET app., 152 WinForms applications Weblnfo file type, 498 context menus, 73 web_hightrust.config, 503 debugging, 80 web_notrust.config, 503 additional functionality, 87 WiFi warning Command window, 84 security, mobile web apps., 217 examining values, 84 Win32 resources Immediate window, 84 wizards, 480 keyboard shortcuts, 48 window configuration, 37 4 when app. is rurming, 85 window controls dialog boxes, 67 customizingVS.NET IDE, 372, 374 form menus, 71 Windows section, VS.NET IDE, 13 how forms work, 50 Wmdow Layout, 356 keyboard shortcuts, 48 window manipulation, 372 menus, 67 window modes, 372 message boxes, 68 Wmdow Style properties overview, 45 dialog boxes, 78 projects, creating, 47 window types, 372 toolbars, 67, 7 4 Windows Application project type, 491 adding toolbar to form, 76 creating Smart Device app., 224 transition from languages, 46 Windows applications visual inheritance, 46, 79 COM Client Form Controls, 314 zero-touch deployment, 46 creating additional forms, 77 WinForms controls, 51 creating WinForms project, 4 7 aligning, 54 customizingVS.NET IDE, 366 anchoring controls, 56 deploying on Internet, 324 arranging, 54 desktop applications, 293 controlling form elements, 53 DotNetClient project, 312 data controls, 61 DotNetServer assembly, 312 docking controls, 57 integrating reports into apps., 339 fieldset, adding to form, 53 languages for development, 45 formatting, 54 Wmdows CE platform multiple controls, 55 creating Smart Device app., 223 GroupBox control, 53 DEX 571

Label control, 54 X nongraphical controls, 60 XCopy deployment ordering controls, 58 deploying projects/apps., 316 tab order, 59 web applications, 323 TextBox control, 53 XHP document UI controls, 60 Attributes node, 392 WinForms designer, 46 Context element, 392 WinForms projects LinkGroup element, 391 see WinForms applications Unks node, 391 Wireless Transport Layer Security (WILS) Litem element, 391 security, mobile web apps., 217 XHTML WIZard2.vsz file, 482 VS.NET compatibility, 123 WIZardResources.dll file, 483 XML wizards, 463-489 .NET Framework and .NET CF, 223 Add-In wizard, 402 inserting skeleton XML comment, customizingVS.NET IDE, 395 431 directory structure, 463 XML Designer, Options dialog, 354 file types generated, 494 .xml file type, 495 IDTWIZard interface, 474 XMLfiles implementing, 472 data for web form, 127 Code DOM Support, 475 persisting data for DataSet, 183 code generation, 475 XML Help Provider (XHP) debugging, 4 79 contexts, 388 Generate method, 476 customizingVS.NET IDE, 388 installation, 482 documents, 388 improving wizards, 483 DynamicHelp tag, 389 New Test WIZard, 272 XML menu, VS.NET IDE, 10 script-based wizard, 466 XML options, text editor for, 362 templates, 4 70 XML Schema file type, 495 UML diagram, 4 71 XML Schema tab, Toolbox, 31 Win32 resources, 480 XML/XSL Document workstations XMLNS attributes, 110 team development, 243 .xsd file type, 495 Write/WriteLine methods, Debug class DataSet object, 183 CE.NET and Pocket PC compared, 234 .xslt file type, 495 modifying Add-In wizard-generated code, 409 z tracing add-in methods in debugger, 410 zero-touch deployment, 46, 327 .wsffile type, 496 JOIN THE APRESS FORUMS AND BE PART OF OUR COMMUNITY. You'll find discussions that cover topics of interest to IT professionals, programmers, and enthusiasts just like you. If you post a query to one of our forums, you can expect that some of the best minds in the business-especially Apress authors, who all write with The Expert's Voice™-will chime in to help you. Why not aim to become one of our most valuable partic• ipants (MVPs) and win cool stuff? Here's a sampling of what you'll find:

DATABASES PROGRAMMING/BUSINESS Data drives everything. Unfortunately, it Is. Share information, exchange ideas, and discuss any database Talk about the Apress line of books that cover software programming or administration issues. methodology, best practices, and how programmers interact with the "suits."

INTERNET TECHNOLOGIES AND NETWORKING WEB DEVELOPMENT/DESIGN Try living without plumbing (and eventually 1Pv6). Ugly doesn't cut it anymore, and CGI is absurd. Talk about networking topics including protocols, design, Help is in sight for your site. Rnd design solutions for your administration, wireless, wired, storage, backup, certifications, projects and get ideas for building an interactive Web site. trends, and new technologies.

JAVA SECURITY We've come a long way from the old Oak tree. Lots of bad guys out there-the good guys need help. Hang out and discuss Java in whatever flavor you choose: Discuss computer and network security issues here. Just don't let J2SE, J2EE, J2ME, Jakarta, and so on. anyone else know the answers!

MAC OSX TECHNOLOGY IN ACTION ~I about the Zen of OS X. Cool things. Fun things. OS X is both the present and the future for Mac apps. Make It's after hours. It's time to play. Whether you're into LEGO® suggestions, offer up ideas, or boast about your new hardware. MINDSTORMS™ or turning an old PC into a DVR, this is where technology turns into fun.

OPEN SOURCE WINDOWS Source code is good; understanding (open) source is better. No defenestration here. Discuss open source technologies and related topics such as Ask questions about all aspects of Windows programming, get PHP, MySQL, Linux, Perl, Apache, Python, and more. help on Microsoft technologies covered in Apress books, or provide feedback on any Apress Windows book.

HOW TO PARTICIPATE: Go to the Apress Forums site at http://forums.apress.com/. Click the New User link.