我正在尝试将我们的构建从运行自定义 .msbuild 文件的 CruiseControl.NET 切换到 Team Build 2010。正在编译的应用程序是一个 VS2008 解决方案,其中包含多个项目,其中两个是 Web 项目。
使用 DefaultTemplate.xaml,这两个 web 项目似乎部署到 Binaries\_PublishedWebsites\(ProjectName)
.该默认位置很好。然而,输出目录的内容似乎是可更新的,就像 aspnet_compiler.exe
被调用 -u
,或者就像 MSBuild <AspNetCompiler>
任务与 Updateable="true"
一起使用.所以,两个问题:
_PublishedWebsites
目录? <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/