Automated Deployment - MSBuild.Community.Tasks - WebDirectoryCreate / WebDirectorySettings Example

From my previous post of WebDirectoryCreate I have an example script of how you would use MSBuild Community Tasks to Set up Virtual Directories and/or do updates to the current virtual directory.

The below is an example of how you can create or update virtual directories.  This is what you would add to the MSBuild.proj file.

 

<PropertyGroup>
  <!-- Virtual Directory Items-->
  <EnableVirtualDirectorySetup>True</EnableVirtualDirectorySetup>
  <VirtualDirectoryApplicationPoolName>ASPNET2</VirtualDirectoryApplicationPoolName>
  <!-- Main App Virtual Directory -->
  <VirtualDirectoryPath></VirtualDirectoryPath>
  <VirtualDirectoryName>ZVirDir</VirtualDirectoryName>
  <VirtualDirectoryFullName>$(VirtualDirectoryPath)$(VirtualDirectoryName)</VirtualDirectoryFullName>
  <VirtualDirectoryDefaultDoc>default.aspx</VirtualDirectoryDefaultDoc>
  <EnableVirtualDirectoryAnonymousAccess>true</EnableVirtualDirectoryAnonymousAccess>
</PropertyGroup>
 
<Choose>
  <When Condition=" '$(Environment)'=='DEV' ">
    <PropertyGroup>
      <WebAppServer>serverDev</WebAppServer>
      <!-- Main App Virtual Directory -->
      <VirtualDirectorySetupServerName>$(WebAppServer)</VirtualDirectorySetupServerName>
      <VirtualDirectoryHostHeader>OrgDev</VirtualDirectoryHostHeader>
      <VirtualDirectoryPath>dude/</VirtualDirectoryPath>
      <VirtualDirectoryFullName>$(VirtualDirectoryPath)$(VirtualDirectoryName)</VirtualDirectoryFullName>
      <VirtualDirectoryPhysicalPath>E:\Dev\$(VirtualDirectoryName)</VirtualDirectoryPhysicalPath>
    </PropertyGroup>
  </When>
  <When Condition=" '$(Environment)'=='TEST' ">
    <PropertyGroup>
      <WebAppServer>serverTest</WebAppServer>
      <!-- Main App Virtual Directory -->
      <VirtualDirectorySetupServerName>$(WebAppServer)</VirtualDirectorySetupServerName>
      <VirtualDirectoryHostHeader>test.com</VirtualDirectoryHostHeader>
      <VirtualDirectoryPhysicalPath>E:\Code\$(VirtualDirectoryName)</VirtualDirectoryPhysicalPath>
    </PropertyGroup>
  </When>
</Choose>
 
<Target Name="AppVirtualDirectoryDeploy" Condition="$(EnableVirtualDirectorySetup) =='true'">
 
    <!-- Virtual Directory Setup -->
    <Message Text="" />
    <Message Text="" />
    <Message Text="**********************************************" />
    <Message Text="Virtual Directory/Web.Config Setup - $(Environment)" />
    <Message Text="**********************************************" />
    <Message Text="" />
 
 
    <AppPoolCreate
        Condition="$(Environment) !='LOCAL' AND $(VirtualDirectoryApplicationPoolName) !=''"
        ServerName="$(VirtualDirectorySetupServerName)"
        ApplicationPoolName="$(VirtualDirectoryApplicationPoolName)"
        ContinueOnError="true"
        />
 
    <!-- Virtual Directory Setup - Web Deploy -->
 
    <Message Text="" />
    <Message Text="" />
    <Message Text="**********************************************" />
    <Message Text="Virtual Directory Creation for $(VirtualDirectoryFullName) - $(Environment)" />
    <Message Text="**********************************************" />
    <Message Text="" />
 
    <Message
        Condition="$(Interactive) != 'true'"
        Text="|| Skipping - Interactive setup must be enabled ||"
        />
 
    <Prompt
        Condition="$(Interactive) == 'true'"
        Text="Create virtual directory (leave blank for No)?"
        >
      <Output TaskParameter="UserInput" PropertyName="CreateWebDirectory"/>
    </Prompt>
 
    <!--<WebDirectoryDelete
      Condition="$(CreateWebDirectory) !='' AND $(CreateWebDirectory) !='N'"
      ServerName="$(VirtualDirectorySetupServerName)"
      HostHeaderName="$(VirtualDirectoryHostHeader)"
      VirtualDirectoryName="$(VirtualDirectoryFullName)"
      ContinueOnError="true"
        />-->
 
    <WebDirectoryCreate
        Condition="$(CreateWebDirectory) !='' AND $(CreateWebDirectory) !='N'"
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        VirtualDirectoryPhysicalPath="$(VirtualDirectoryPhysicalPath)"
        AccessRead="True"
        AuthAnonymous="$(EnableVirtualDirectoryAnonymousAccess)"
        AnonymousPasswordSync="False"
        AuthNtlm="True"
        EnableDefaultDoc="True"
        ContinueOnError="true"
        />
 
 
    <Message Text="" />
    <Message Text="" />
    <Message Text="**********************************************" />
    <Message Text="Virtual Directory Updates for $(VirtualDirectoryFullName) - $(Environment)" />
    <Message Text="**********************************************" />
    <Message Text="" />
 
    <WebDirectoryScriptMap
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        Extension=".svc"
        MapToAspNet="True"
        VerifyFileExists="False"
        Verbs="GET,POST,HEAD,DEBUG"
        />
 
    <WebDirectorySetting
        Condition="$(VirtualDirectoryDefaultDoc) !=''"
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        SettingName="DefaultDoc"
        SettingValue="$(VirtualDirectoryDefaultDoc)"
        />
 
    <WebDirectorySetting
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        SettingName="AppFriendlyName"
        SettingValue="$(VirtualDirectoryName)"
        />
 
    <WebDirectorySetting
        Condition="$(Environment) !='LOCAL' AND $(VirtualDirectoryApplicationPoolName) !=''"
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        SettingName="AppPoolId"
        SettingValue="$(VirtualDirectoryApplicationPoolName)"
        ContinueOnError="true"
        />
 
    <Message Text="" />
    <Message Text="" />
    <Message Text="**********************************************" />
    <Message Text="Virtual Directory Anonymous Authorization Account for $(VirtualDirectoryFullName) - $(Environment)" />
    <Message Text="**********************************************" />
    <Message Text="" />
 
    <Message
        Condition="$(Interactive) != 'true' OR $(EnableVirtualDirectoryAnonymousAccess) !='true'"
        Text="|| Skipping - Anonymous authentication and interactive setup must be enabled ||"
        />
 
    <Prompt
        Condition="$(EnableVirtualDirectoryAnonymousAccess) =='true' AND $(Interactive) == 'true'"
        Text="What is the Domain\UserName for the anonymous account (leave blank for inherited/current)?"
        >
      <Output TaskParameter="UserInput" PropertyName="VirtualDirectoryAnonymousUserName"/>
    </Prompt>
    <Message Text="" />
    <Prompt
        Condition="$(VirtualDirectoryAnonymousUserName)!=''"
        Text="Password:"
        >
      <Output TaskParameter="UserInput" PropertyName="VirtualDirectoryAnonymousPassword"/>
    </Prompt>
 
    <WebDirectorySetting
        Condition="$(VirtualDirectoryAnonymousUserName)!=''"
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        SettingName="AnonymousUserName"
        SettingValue="$(VirtualDirectoryAnonymousUserName)"
        />
 
    <WebDirectorySetting
        Condition="$(VirtualDirectoryAnonymousUserName)!=''"
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        SettingName="AnonymousPasswordSync"
        SettingValue="false"
        />
 
    <WebDirectorySetting
        Condition="$(VirtualDirectoryAnonymousUserName)!=''"
        ServerName="$(VirtualDirectorySetupServerName)"
        HostHeaderName="$(VirtualDirectoryHostHeader)"
        VirtualDirectoryName="$(VirtualDirectoryFullName)"
        SettingName="AnonymousUserPass"
        SettingValue="$(VirtualDirectoryAnonymousPassword)"
        />
 
</Target>

Print | posted @ Tuesday, December 18, 2007 11:49 PM

Comments on this entry:

Gravatar # re: Automated Deployment - MSBuild.Community.Tasks - WebDirectoryCreate / WebDirectorySettings Example
by jamesb at 9/19/2008 10:51 AM

This is really useful example. Thank-you

It is great to see others incorporating the deployment process in the build process....
Gravatar # re: Automated Deployment - MSBuild.Community.Tasks - WebDirectoryCreate / WebDirectorySettings Example
by Robz at 9/20/2008 9:49 AM

@jamesb: It looks like it finally got rolled into MSBuild Community Tasks.

Your comment:

Title:
Name:
Email:
Website:
 
Italic Underline Blockquote Hyperlink
 
 
Please add 4 and 4 and type the answer here:
 
Twitter