asp.net-3.5 - 如何让 Team Build 2010 将 Web 应用程序发布为不可更新?

标签 asp.net-3.5 tfsbuild aspnet-compiler

我正在尝试将我们的构建从运行自定义 .msbuild 文件的 CruiseControl.NET 切换到 Team Build 2010。正在编译的应用程序是一个 VS2008 解决方案,其中包含多个项目,其中两个是 Web 项目。

使用 DefaultTemplate.xaml,这两个 web 项目似乎部署到 Binaries\_PublishedWebsites\(ProjectName) .该默认位置很好。然而,输出目录的内容似乎是可更新的,就像 aspnet_compiler.exe被调用 -u ,或者就像 MSBuild <AspNetCompiler>任务与 Updateable="true" 一起使用.所以,两个问题:

  • 如何让 Team Build 产生不可更新的输出到 _PublishedWebsites目录?
  • 我怎样才能像在 MSBuild 任务中执行以下操作一样设置 IIS VirtualPath:
    <AspNetCompiler Clean="true" Force="true" VirtualPath="/My-IIS-Virtual-Path" />
    

  • 我在之前的故障排除中发现,唯一可以让 IIS 6 为使用 aspnet_compiler.exe 编译的 Web 服务提供服务的方法。在不可更新模式下是在命令中指定虚拟路径,这就是我询问#2 的原因。

    编辑:

    看到迄今为止的一个答案,我意识到我应该更清楚问题是什么。我意识到,如果我可以在 MSBuild 中做一些事情,我可以从构建模板中调用 MSBuild。但是,我想知道更多关于如何更改将输出复制到 _PublishedWebsites 所发生的情况。目录。 “查找复制网站并更改它的任务”会很好用,只是我看不到实际将输出复制到 _PublishedWebsites 中的内容。 .我真正想做的是修改模板中完成此操作的步骤。

    构建日志引用了一个名为 _CopyWebApplication 的编译目标。这似乎完成了复制 Web 应用程序所需文件的工作。但是,我不确定如何修改这个编译目标,因为我在构建模板和解决方案的任何文件中都没有看到它。此外,无论运行 _CopyWebApplication似乎只为 Web 应用程序项目运行它,而不是解决方案中的许多其他项目。这是一件好事,只是我不知道决定是否使用_CopyWebApplication的逻辑存在于何处.

    也许我缺少一些默认的 MSBuild 文件?我可以使用的一些构建参数?如何更改上述构建步骤?

    最佳答案

    _CopyWebApplication的所有逻辑目标定义在:

    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
    

    目标本身相当简单,但它带有一堆先决条件:
    <Target Name="_CopyWebApplication" 
            Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'" 
            DependsOnTargets="$(_CopyWebApplicationDependsOn)">
    
      <CallTarget Condition="'$(OnAfter_CopyWebApplication)' != ''" Targets="$(OnAfter_CopyWebApplication)" RunEachTargetSeparately="true" />
    
    </Target>
    

    一旦获得所需的标志集,您就可以控制该过程。以下是默认值:
    <WebProjectOutputDirInsideProjectDefault>True</WebProjectOutputDirInsideProjectDefault>
    <WebProjectOutputDirInsideProjectDefault  Condition="('$(OutDir)' != '$(OutputPath)') Or ('$(IsDesktopBuild)' == 'False')" >False</WebProjectOutputDirInsideProjectDefault>
    <DisableLinkInCopyWebApplicaton Condition="'$(DisableLinkInCopyWebApplicaton)'==''">False</DisableLinkInCopyWebApplicaton>
    <Disable_CopyWebApplication Condition="'$(Disable_CopyWebApplication)' == ''">False</Disable_CopyWebApplication>
    <UseWPP_CopyWebApplication Condition="'$(UseWPP_CopyWebApplication)' == ''">False</UseWPP_CopyWebApplication>
    <CleanWebProjectOutputDir>True</CleanWebProjectOutputDir>
    <CleanWebProjectOutputDir Condition="$(WebProjectOutputDirInsideProject)" >False</CleanWebProjectOutputDir>
    

    关于asp.net-3.5 - 如何让 Team Build 2010 将 Web 应用程序发布为不可更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419591/

    相关文章:

    asp.net - 无法编辑以在 ListView 上工作

    c# - 没有页面名称的 url 重写

    powershell - 使用 OAuth token 删除 VSTS 构建

    .net - 从命令行调用 MSBuild 时转义 DisabledWarnings 的正确方法是什么?

    asp.net - 为什么我的 ASP.NET 4.0 Web 服务因 NetworkService 编译错误而失败,但 LocalSystem 成功

    deployment - Crystal报表文件未部署到ASP.NET MVC中的服务器

    asp.net-3.5 - enableviewstatemac=true

    powershell - 从 VS Team Services 构建中运行的 Powershell 创建工作区

    tfsbuild - TFS 2013将服务器路径转换为本地路径

    asp.net-mvc-3 - aspnet_compiler 作为构建后事件在空的 MVC3 应用程序上遇到 IIS 错误