I'm always trying to make my project deployment as easy as possible.
One of the "problems" I've encountered is keeping my solution structure, that is:
- MySolutionDirectory
- MyWebProject
- MyBusinessLayerClassLibrary
- MyDataAccessLayerClassLibrary
- MyEntitiesClassLibrary
- etc.
This is hard to do, especially when the "Add Web Project" creates a virtual directory in
my wwwroot directory by default which breaks my desired structure.
When I want to initialize the Solution or to pull the entire solution from the
VSS (e.g - on a new programmer station) I need to take these steps beforehand -
- Create the directory [solution-path]\[web-project\webservice name]
- Go to my IIS and add the required virtual directory which will redirect to step 1 path.
Otherwise, the VS.NET will create the web folders in my wwwroot automatically, which will again break my preferred structure.
In addition, in some of my solutions, I have more than 1 web project\webservice and repeating these steps can get very annoying.
So, after
reading about IIS API, I've created an IIS helper utility for creating virtual directories by
demand in one-click EXE.
The configuration file is quite simple:
<VDSettings>
<Directories>
<Directory>
<DirectoryPath>C:\Projects\MySolution\MyWebProject</DirectoryPath>
<VirtualDirectoryName>MyWebProject</VirtualDirectoryName>
</Directory>
<Directory>
<DirectoryPath>C:\Projects\MySolution\MyWebShareProject</DirectoryPath>
<VirtualDirectoryName>MyWebShareProject</VirtualDirectoryName>
<CreateUnder>MyWebShareProject</CreateUnder>
</Directory>
</Directories>
</VDSettings>
This sample demonstrates how to add "MyWebProject" Virtual Directory and create another
Virtual Directory, under "MyWebProject", named "MyWebShareProject".
* 2 Notes:
- You can create the virtual directory under a WebSite by using "WebSiteName" element under the "Directory" element.
- If the "DirectoryPath" doesn't exist - the utility will create it before setting the Virtual Directory path.
Now, when a co-worker in my company is trying to deploy my solution on his station, all he needs to
do is to run VDCreator.exe and he can continue the deployment via VS.NET -> "Open From Source Control..." option.
That's what I call "child's play" deployment.
The files: