asp.net - 如何将内置的网站程序包MS部署到原始IIS网站

标签 asp.net msbuild cruisecontrol.net msdeploy

我正在尝试使我们的构建/部署过程自动化。

到目前为止,我正在使用:

  • 一个带有主要Web应用程序项目(和相关项目)的Visual Studio 2010解决方案
  • MSBuild
  • MSDeploy
  • CruiseControl.Net

  • 因此,经过三番磨砺,我现在让CCNet启动了一个MSBuild脚本来构建,打包和部署该网站。 MSBuild脚本如下:
    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Build"> 
        <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.sln"
                        Targets="Clean;Rebuild"
                        Properties="Configuration=$(Configuration)"
        />
    </Target>
    
    <!--<Target Name="Test" DependsOnTargets="Build">
        <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web.Tests\Product.Web.Tests.csproj"
                        Properties="Configuration=$(Configuration);OutputPath=$(CCNetArtifactDirectory)\Tests\" />
        <Exec Command="$(MSTestPath) /testcontainer:$(CCNetArtifactDirectory)\Tests\Product.Web.Tests.dll /runconfig:$(CCNetWorkingDirectory)\src\Local.testsettings" ContinueOnError="false" />
    </Target>-->
    
    <Target Name="Package" DependsOnTargets="Build"> 
        <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web\Product.Web.csproj"
                        Targets="Package"
                        Properties="Configuration=$(Configuration);PackageLocation=$(PackageDir)\Product.zip"
        />
    </Target>
    
    <Target Name="Deploy" DependsOnTargets="Package">
        <Exec Command="&quot;$(MSDeployPath)&quot; -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" />
    </Target>
    

    只要在目标计算机上已经在IIS中配置了网站,这一切都可以正常工作。这不必是现有的“真实”站点(它可以只是一个shell)。

    尽管这很棒,但我确实希望MSDeploy自动创建网站,就像它可以使用Web应用程序一样。这可能吗?如果是这样,任何帮助将不胜感激!

    最佳答案

    可以肯定的是,MSDeploy无法做到这一点。我过去做过的一件事是有一个Exec任务调用appcmd.exe来拆除/建立一个新的网站。 MSBuild Community TasksMSBuild Extension Pack具有一些网站功能。

    关于asp.net - 如何将内置的网站程序包MS部署到原始IIS网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3638873/

    相关文章:

    c# - ASP.NET Core 3 API 忽略带有 Bearertoken 的授权属性

    c# - 如何获取在按钮按下事件期间创建的信息以显示在我的 html 页面上?

    angularjs - Angular 基础教程不适用于 Windows?

    vb.net - 在 Visual Studio 中使用自动构建进行条件编译

    configuration - CruiseControl.net 在 Vista x64 上失败并出现 HTTP 错误 500

    asp.net - 我可以从代码中调用 ASP.NET RegSQL 吗?

    windows - 使用 MSBuild 为具有可配置服务名称的 Windows 服务生成 MSI 安装程序

    msbuild - CruiseControl.NET 与 Web 部署项目

    cruisecontrol.net - 如何在 CruiseControl BuildReport 中包含 SpecFlow .html 报告?

    ASP.NET Azure Blob 地理冗余存储 - 如何使用?