This section provides an overview of the deployment. options that are available to .NET developers. Most of these options are discussed in greater detail later in this chapter.
The xcopy utility enables you to copy an assembly or group of assemblies to an application folder, cutting down on your development time. Because assemblies are self-discovering (that is, the metadata that describes the assembly is included in the assembly), there is no need to register anything in the registry. Each assembly keeps track of what other assemblies it requires to execute. By default, the assembly looks in the current application folder for the dependencies. The process of moving (or probing) assemblies to other folders is discussed later in this chapter.
Copy Web Tool
If you are developing a Web project, using the Copy Web tool option on the Web site menu will copy the components needed to run the application to the server.
Publishing Web Sites
When a Web site is published, the entire site is compiled and then copied to a specified location. As a result of precompiling, all source code is removed from the final output and all compile errors can be found and dealt with .
Visual Studio 2008 has the capability to create setup programs for an application. There are four options based on Microsoft Windows Installer technology: creating merge modules, creating a setup for client applications, creating a setup for Web applications, and creating a setup for Smart Device (Compact Framework) based applications. The ability to create cab files is also available. Deployment projects offer a great deal-of flexibility and customization for the setup process. One of these deployment options will be useful for larger applications.
ClickOnce is a way to build self-updating Windows-based applications. ClickOnce allows an application to be published to a Website, file share, or even a CD. As updates and new builds are made to the application they can be published to the same location or site by the development team. As the application is used by the end user, it will check the location and see if an update is available. If there is, an update is attempted.