如何使用MSBuild Extension Pack创建包含应用程序的网站

时间:2009-10-29 05:28:27

标签: iis-7 msbuild msbuildcommunitytasks

使用MSBuild Extension Pack创建网站的正确方法是什么?

我正在尝试使用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>

1 个答案:

答案 0 :(得分:2)

您需要有效的别名才能尝试

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

进一步讨论here