如何使用MSBuild扩展包创建带有应用程序的网站

问题描述:

使用MSBuild Extension Pack创建网站的正确方法是什么?如何使用MSBuild扩展包创建带有应用程序的网站

我正在尝试使用MSBuild Extension Pack来创建使用以下目标的网站。不幸的是,我没有正确的语法。这个目标会抛出一个异常,说“InvalidOperationException:指定的路径已经存在。\ r”。这是在添加应用程序之后。

我已经通过更改WebApplication项目或VirtualDirectory项目尝试了以下目标的几个不同版本。如果我将WebApplication项目的Include属性更改为“/”以外的内容,那么创建将起作用。虽然一旦网站创建,我不能启动它,因为COM错误0x800710D8。 (对象标识符没有表示一个有效的对象)

<Target Name="ProvisionIIS7WebSite" DependsOnTargets="CreateDeploymentNumber"> 
    <PropertyGroup> 
    <WebSiteName>$(BaseDeploymentName)$(DeploymentNumber)</WebSiteName> 
    <PortNumber>$(DeploymentNumber)</PortNumber> 
    </PropertyGroup> 

    <ItemGroup> 
    <WebApplication Include="/"> 
     <PhysicalPath>$(WebSitePath)</PhysicalPath> 
    </WebApplication> 
    <VirtualDirectory Include="/"> 
     <ApplicationPath>/</ApplicationPath> 
     <PhysicalPath>$(WebSitePath)</PhysicalPath> 
    </VirtualDirectory> 
    </ItemGroup> 

    <!-- Create new site --> 
    <MSBuild.ExtensionPack.Web.Iis7Website TaskAction="Create" 
    Name="$(WebSiteName)" 
    Port="$(PortNumber)" 
    Path="$(WebSitePath)" 
    AppPool="$(WebSiteAppPool)" 
    Applications="@(WebApplication)" 
    VirtualDirectories="@(VirtualDirectory)"> 
    <Output TaskParameter="SiteID" PropertyName="WebSiteID" /> 
    </MSBuild.ExtensionPack.Web.Iis7Website> 
    <Message Text="Created website with ID $(WebSiteID)" /> 
</Target> 

你需要一个有效的别名,尝试

<ItemGroup> 
    <WebApplication Include="/MyApp"> 
     <PhysicalPath>$(WebSitePath)</PhysicalPath> 
    </WebApplication> 
    <VirtualDirectory Include="/MyVdir"> 
     <ApplicationPath>/MyApp</ApplicationPath> 
     <PhysicalPath>$(WebSitePath)</PhysicalPath> 
    </VirtualDirectory> 
    </ItemGroup> 

进一步讨论here