Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在生成后自动执行重复任务?_C#_Asp.net_Visual Studio 2005_Msbuild_Web Deployment Project - Fatal编程技术网

C# 如何在生成后自动执行重复任务?

C# 如何在生成后自动执行重复任务?,c#,asp.net,visual-studio-2005,msbuild,web-deployment-project,C#,Asp.net,Visual Studio 2005,Msbuild,Web Deployment Project,我运行了一个ASP.NET网站解决方案,其中包含一些其他项目。我知道MSBuild项目能够做到这一点,但这是最好的方法吗?它们容易创建吗?nAnt、CruiseControl.NET或其他解决方案更好吗 当我使用构建站点时,我是否可以自动化部分构建,以便它不会将某些文件夹从项目复制到发布文件夹中?例如,我有带有本地搜索索引、图像和文件夹中其他内容部分的文件夹,但在部署项目时,我从不需要或上传这些内容 我还希望这种类型的解决方案能够自动增加版本号和版本号。CruiseControl.NET解决了一

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

当我使用构建站点时,我是否可以自动化部分构建,以便它不会将某些文件夹从项目复制到发布文件夹中?例如,我有带有本地搜索索引、图像和文件夹中其他内容部分的文件夹,但在部署项目时,我从不需要或上传这些内容


我还希望这种类型的解决方案能够自动增加版本号和版本号。

CruiseControl.NET解决了一个不同的问题—持续集成。。。然而,我在南特取得了巨大的成功,特别是你的要求。这是一个学习曲线,但一旦你熟练了,你会想知道你是如何使用它的。

你可以在单个文件上设置构建操作/Copy to Output Directory属性,选择文件并点击F4打开属性窗口,以控制在构建过程中对它们发生的事情,而不是对文件夹。如果您不想手动执行预构建任务,那么这可能会通过预构建任务实现自动化


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

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

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


无法编辑Web部署项目的MSBuild文件以使其执行所需的操作吗?

MaseBase,可以用于生成和打包网站。对于具有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>
-->

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

以下是在.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>
这将允许您删除文件夹

我怀疑,如果您根本不想复制文件夹,解决方案文件将是指定的位置,尽管我不必使用它