Web Deployment projects can be used with either the “ASP.NET Web Site” or “ASP.NET Web Application Project” options built-into VS 2008, and provide a few additional build, packaging and deployment options for you to use. You can read an old tutorial post of mine here to learn more about they work.
The VS 2008 Web Deployment Project version supports all of the existing features provided by the VS 2005 web deployment download. It also adds additional support for:
Easily migrating VS 2005 Web Deployment Projects to VS 2008 Web Deployment Projects Replacing output only if web deployment builds succeed IIS7 Support This RTW (release to web) version fixes bugs and adds some small features that people requested in the December CTP version they released last month. Please make sure to run setup and uninstall any older version of the VS 2008 Web Deployment Project support you have installed before installing this final version. VS 2008 Web Deployment Projects can be installed side-by-side with VS 2005 Web Deployment Projects – so there is no need to uninstall the VS 2005 version if you are still using it with older projects.
More Deployment Features
This tool works with both IIS6 and IIS7 and enables automated copy deployment, file synchronization, and migrating of applications onto web servers. If you are looking for a great way to automate the deployment of your ASP.NET applications onto remote servers then this tool is definitely one to check out.
You can use VS 2008 Web Deployment Projects as a post-build step within your build environment to fix up last minute deployment settings – and then use the IIS Web Deployment tool to copy them remotely onto server machines. Alternatively you can also use the IIS Web Deployment Tool to copy vanilla “ASP.NET Web Site” or “ASP.NET Web Application” projects to remote machines (no VS 2008 Web Deployment Project required).
To learn more about the new IIS Web Deployment tool, read the walkthroughs at the bottom of this page (in particular the “Introduction to MS Deploy” one). I will also be doing a blog post in the future that talks more about how to use it to automate your web server deployments.
Attached is a downloadable copy of “Open XML Explained” by Wouter Van Vugt, the first book on Open XML development. The sample documents for the book are also available for download here.
This 128-page book covers the basics of Open XML, including many of the topics covered in the Open XML developer workshops, as well as several additional topics. The author, Wouter Van Vugt, is a software development trainer/consultant who specializes in the Open XML file formats. You may know from his participation in the forums here on OpenXMLDeveloper.org, or from his blog where he covers Open XML and other .NET development topics.
My colleague and good friend Michael Demeersseman has written a new article on Dijkstra and created a small demo application what's worth checking out…
All points are locations. The connections between the points have a specific weight. Not all connections are bidirectional (a dot marks a start travel point). When Calculate is pressed, all routes from the selected location are calculated. When a route is selected in the listbox, the shortest route is visually shown by coloring the start dots red. In this example, the shortest route from 0 to 4 is going through location 2, 1 and then 4.
Dijkstra was a Dutch computer scientist who invented a fast and simple way to calculate the shortest path between two points. Many examples I have found on the Internet implement that algorithm but none of them have done it in an Object Oriented way. So I thought of making my own.
To add locations, click on the ‘Add Location’ button and then click on the map where you want to add locations.
To add routes, click on the ‘Add Location’ button to deactivate the add location, then click on a start location, then click on a end location. The weight of the route can be configured on top.
RouteEngine: Calculates the route
I will only go into details about the RouteEngine. How the UI is handled is not so important for this article but if you need information about it, you can always ask.
Connection: This class holds the information about the connection between two dots. This is a one directional connection from A (the startpoint is visually shown with a dot) to B with a specific weight attached.
Location: Just a location (for example 1).
RouteEngine: This class will calculate all routes from one given startPoint.
Route: This class holds the information about a route between two points (generated with the RouteEngine class).
The most simple class. It only holds a name to display.
This class contains two Location objects and a weight.
public Connection(Location a, Location b, int weight)
this._a = a;
this._b = b;
this._weight = weight;
This class contains a route. It has only a list of connections and the total weight. This class is generated by the route engine.
This is the class that drives the component. The algorithm is as follows:
Set the startPosition as active
Set the total weight to all routes to infinite
Iterate through all connections of the active position and store their weight if their weight is smaller than their current weight
Set the active position as used
Set the nearest point (on whatever location) that isn’t used as active
Repeat 3, 4, 5 until all positions are used
The following method will perform all these steps (and some extra checking and thinking). The Dictionary returned is a list of destination locations and the corresponding route to each destination location.