【发布时间】:2017-01-06 21:59:13
【问题描述】:
我正在致力于部署过程的自动化,我需要找到一种方法来构建和部署一个 asp.net 网站。
除此之外,如果新创建的 IIS 尚不存在,我还想为新创建的 IIS 创建 IIS 站点和应用程序池。
这是否可以通过 Web Deploy 实现(或者是否有更好的方式/工具/方法来实现这些目标?)
【问题讨论】:
标签: iis msbuild webdeploy application-pool devops
我正在致力于部署过程的自动化,我需要找到一种方法来构建和部署一个 asp.net 网站。
除此之外,如果新创建的 IIS 尚不存在,我还想为新创建的 IIS 创建 IIS 站点和应用程序池。
这是否可以通过 Web Deploy 实现(或者是否有更好的方式/工具/方法来实现这些目标?)
【问题讨论】:
标签: iis msbuild webdeploy application-pool devops
考虑使用 Miceosoft.Web.Administration 命名空间中的 ServerManager 类。具体来说,ApplicationPools 和 Sites 属性。 例如,
ServerManager sm = new ServerManager();
Site site = serverMgr.Sites.Add(“MySiteName”, “C:\\inetpub\\wwwroot”, 8080);
sm.ApplicationPools.Add(“MyAppPool”);
sm.CommitChanges()
欲了解更多信息,请参阅https://msdn.microsoft.com/en-us/library/microsoft.web.administration.servermanager(v=vs.90).aspx
希望这会有所帮助。
【讨论】:
还有 MSBuildExtensionPack:
https://github.com/mikefourie/MSBuildExtensionPack
我想所说的 msbuild-family-of-actions 使用 Microsoft.Web.Administration 命名空间在 IIS 7 中创建新网站方面发挥其魔力,并且脚本看起来像这样(尚未在我自己的服务器还):
<Target Name="ProvisionIIS7WebSite" DependsOnTargets="CreateDeploymentNumber">
<PropertyGroup>
<WebSiteName>$(BaseDeploymentName)$(DeploymentNumber)</WebSiteName>
<PortNumber>$(DeploymentNumber)</PortNumber>
</PropertyGroup>
<ItemGroup>
<WebApplication Include="/MyApp">
<PhysicalPath>$(WebSitePath)</PhysicalPath>
</WebApplication>
<VirtualDirectory Include="/MyVdir">
<ApplicationPath>/MyApp</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>
【讨论】: