如何在构建后自动执行重复性任务?

时间:2008-08-19 05:54:19

标签: c# asp.net visual-studio-2005 msbuild web-deployment-project

我运行一个ASP.NET网站解决方案,其中包含一些其他项目。我已经知道MSBuild项目能够做到这一点,但这是最好的方法吗?它们易于创建吗? nAnt,CruiseControl.NET或任何其他解决方案更好吗?

当我构建网站时(使用Web Deployment Projects),我是否可以自动部分构建,以便它不会将某些文件夹从项目复制到Release文件夹中?例如,我有文件夹,包含本地搜索索引,图像和文件夹的其他内容部分,但在部署项目时我从不需要或上传它们。

我也在寻求这种类型的解决方案来自动增加构建和版本号。

7 个答案:

答案 0 :(得分:8)

以下是在.wdproj文件中编写此类任务脚本的Web部署项目示例:

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

这将允许您删除文件夹。

(我怀疑如果你想在 上没有文件夹副本,那么解决方案文件就是指定它的地方,尽管我没有必要使用它。)< / p>

答案 1 :(得分:4)

MaseBase,您可以使用Web Deployment Projects构建和打包网站。我们一直为具有Web应用程序方面的项目执行此操作。将WDP分配给网站后,可以将 .wdproj 文件打开为纯文本XML文件。最后是MSBuild目标的注释部分,表示在构建过程中触发的事件序列。

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

您可以取消注释所需的目标(例如“AfterBuild”)并在那里插入必要的任务以执行重复的构建后活动。

答案 2 :(得分:2)

您可以在单个文件上设置“构建操作/复制到输出目录”属性(选择文件并按F4打开属性窗口)以控制在构建期间发生的情况,但不能控制文件夹。如果您不想手动执行此操作,可以使用(预)构建任务自动执行此操作。

或者,您可以从项目中排除这些文件夹(右键单击并“从项目中排除”);它们仍然存在(解决方案资源管理器中的“显示所有文件”),但在构建项目时不会包含它们。

答案 3 :(得分:1)

CruiseControl.NET解决了一个不同的问题(持续集成)...但是,我已经在NAnt上取得了巨大的成功,特别是你所要求的。有一个学习曲线,但一旦你熟练,你会想知道你是如何与它相处的。

答案 4 :(得分:1)

除了@Fredrik关于将项目项设置为“复制到输出目录”的提示之外,您还可以在“构建”选项卡的项目属性中指定构建后操作,并包括CMD命令,如copy.exe和move.exe

答案 5 :(得分:1)

我们使用FinalBuilder自动执行一系列后期构建/预构建任务。还有一个Web界面,您可以通过登录网站并单击按钮来启动构建(或推送网站)。

http://www.finalbuilder.com/

答案 6 :(得分:1)

您是否无法编辑Web部署项目的MSBuild文件以使其执行您想要的操作?