Published:
29 Jul 2010
|
Abstract
This article examines the important aspects involved with the deployment of web applications using Visual Studio 2010. After a brief introduction, Scott provides a detailed overview of the new Publish Web Dialog including the steps required to configure and save a published profile. He then discusses the utility of the One Click Publish Toolbar with special coverage of Web.Config Transformations, Database Deployment, Web Deployment Packages. Towards the end of the article, he provides the steps required to integrate a Visual Studio 2010 application with Team Build. |
|
by Scott Guthrie
Feedback
|
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days):
46032/
59
|
|
|
Introduction |
Republished with Permission - Original
Article
This is the twenty-fifth in a series of blog posts I’m doing on the VS 2010 and .NET 4
release.
Today’s blog post is the first of several posts I’ll be
doing that cover some of the improvements we’ve made around web deployment.
I’ll provide a high-level overview of some of the key improvements.
Subsequent posts will then go into more details about each feature and how best
to take advantage of them.
|
Making Web Deployment Easier |
Deploying your web application to a server is something that
all (successful) projects need to do. Without good tools to help you,
deployment can be a cumbersome task – especially if you need to do it manually.
VS 2010 includes a bunch of improvements that make it much
easier to deploy your ASP.NET web applications – and which enable you to build
automated deployment procedures that make deployment easily reproducible.
The deployment features support not just deploying your web content – but also
support customizing your web.config file settings, deploying/updating your
databases, and managing your other dependencies. You can kick-off
deployments manually – or via automated scripts or as part of an automated
build or continuous integration process.
Below is a high-level overview of some of the key new web
deployment features in VS 2010. I’ll do subsequent posts that provide
more details on how to use/customize each of them.
|
New "Publish Web" Dialog |
Visual Studio 2010 includes a new “Publish Web” dialog that
you can use to quickly deploy a web application to a remote server.
You can activate the dialog by right-clicking on an ASP.NET
Web Project node within the solution explorer, and then select the “Publish”
context menu item:
Selecting this will bring up a “Publish Web” dialog which
allows you to configure publish location settings.
|
Configuring and Saving a Publish Profile |
You only need to define your publish settings once – you can
then save them as a named “Publish Profile” to enable you to quickly re-use
them again later.
Above I’ve created a “ScottGu Site” profile, and configured
it to deploy via FTPS (a version of FTP that uses SSL) to a remote
server. To deploy over FTPS select the “FTP” node in the drop-down, and
then prefix the server location you want to publish to with the “ftps://”
prefix.
Note that you can either re-enter your password each time
you deploy – or save the password for future uses in a secure location (just
click the “Save Password” checkbox to do this.
|
Web Deploy |
In addition to supporting FTP/FTPS, VS 2010 also supports a
more powerful publish mechanism called “Web Deploy”. Web Deploy (earlier
known as MSDeploy) provides a much more comprehensive publishing and deployment
mechanism than FTP. It not only allows you to publish files, but also allows
you to publish IIS Web Server Settings, Database Schema/Data, Database Change
Scripts, Security ACLs, and much more.
Web Deploy can be used to deploy applications both to a
single server, as well as to multiple servers within a web farm. Web
Deploy is also now supported by many inexpensive Windows hosting providers
(some as cheap as $3.50/month for an ASP.NET + SQL account). You can find
great ASP.NET hosters that support Web Deploy by visiting this page: http://asp.net/find-a-hoster.
|
One Click Publish Toolbar |
Clicking the “Publish” button within the “Publish Web”
dialog will publish a web application (and optionally associated database
schema/content) to a remote web server.
VS 2010 also supports a “one click” publish toolbar that you
can add to your IDE to quickly publish/re-publish your project without having
to load the “Publish Web” dialog:
Just select your publish profile from the toolbar drop-down
and then click the publish icon to the right of it to begin deploying your
application.
|
Web.Config Transformations |
In most real-world deployment scenarios, the web.config file
you use for development is different than the one you use for production
deployment. Typically you want to change environment settings like
database connection-strings, making sure debug is turned off, and enabling
custom errors so that end-users (and hackers) don’t see the internals of your
application.
VS 2010 now makes it easy to customize/tweak/modify your
web.config files as part of your publish/deployment process.
Specifically, you can now easily have build-configuration specific
transformation files that can customize your web.config file prior to the
application being deployed:
You can maintain a separate transform file per Visual Studio
build-environment. For example, you could configure your project/solution
to have a “Debug”, “Staging” and “Release” build configuration – in which case
VS will maintain three separate transform files for you. VS will
automatically apply the appropriate one at deployment time depending on what
your VS environment is set to.
I will dive deeper into how to perform web.config file
transformations in a future blog post.
|
Database Deployment |
VS 2010 allows you to optionally deploy a database, along
with your web application files, when are using the “Web Deploy” option as your
deployment mechanism. Databases deployed this way can include both schema and
data, and can optionally also include change scripts to update existing
databases.
ASP.NET Web Projects in VS 2010 have a special page within
their the “project properties” settings to configure database deployments:
I will dive deeper into how to perform database deployments
in future blog posts.
|
Web Deployment Packages |
VS 2010 also supports a packaging option that enables you to
package up your ASP.NET Web Application (together with its dependencies like
web.config, databases, ACLs, etc) into a .zip based deployment package file
that you can optionally hand-off to an IT administrator who can then easily
install it either via the IIS Admin Tool or via a command-line/powershell script.
The deployment package you create can optionally expose
application configuration settings that can be overridden (like directory
locations, database connection-strings, etc). When using the IIS7 Admin
Tool, the install wizard can prompt the administrator for each setting to be
customized – enabling you to provide a clean customization experience without
having to write any custom code to-do so. The settings can also obviously
be passed as arguments on the command-line when using a command-line or
Powershell script to deploy the application.
To create a web package within Visual Studio 2010, just
right click on your ASP.NET Web Project node in the solution explorer and
select the “Build Deployment Package” menu item:
This will compile your application, perform appropriate
web.config transforms on it, optionally create .sql scripts for your database
schema and data files, and then package them all up into a .zip deployment
package file. Adjacent to the .zip file you’ll file a deployment script
file that you can use to automate deployment of the package to a remote server.
I will dive deeper into how to create web deployment
packages in future blog posts.
|
Continuous Integration with Team Build |
Most of the VS 2010 web deployment features that I described
above are built on top of MSBuild tasks & targets. The “Team Build” feature
of TFS also uses MSBuild, and supports running nightly builds, rolling builds,
and enabling continuous integration. This means that you can create deployment
packages, or automatically publish your web applications from a Team Build
environment.
I will dive deeper into how to enable this in future blog
posts.
|
Summary |
Today’s blog post covered some of the new VS 2010 web
deployment features at a high-level. All of the above features Iwork with
both VS 2010 as well as the free Visual Web Developer 2010 Express Edition.
Hopefully today’s post provided a broad outline of all the
new deployment capabilities, and helped set context as to how they are useful.
In future posts I’ll go deeper and walkthrough the specifics of how to really
take full advantage of them.
Hope this helps,
Scott
Follow me at: twitter.com/scottgu
|
Resources |
|
|
|
User Comments
No comments posted yet.
|
Product Spotlight
|
|