将网站部署包构建为postbuild事件

时间:2010-07-01 13:43:58

标签: visual-studio-2010 msbuild msdeploy

我正在使用visual studio 2010.我有一个网站项目,我想在每次构建项目时构建一个网站部署包。基本上我正在寻找一个post build MSBuild命令的例子,该命令基本上与网站右键菜单中的“Build Deployment Package”选项做同样的事情。

2 个答案:

答案 0 :(得分:8)

我假设您正在使用Web应用程序项目,因为Web站点项目没有“构建部署包”。

我建议不要在每次构建时执行包,因为这会大大减慢您的开发速度。话虽如此,你可以在这里做到这一点。

如果真的想要这样做,最好的办法就是不要使用构建后事件,而是编辑项目文件并扩展构建过程。要执行此操作,请打开Web的.csproj文件,然后打开底部(在导入元素之后)放置以下内容

<PropertyGroup>
  <BuildDependsOn>
    $(BuildDependsOn);
    Package
  </BuildDependsOn>
</PropertyGroup>

这样做是为了扩展构建过程以调用 Package 目标。这与在Visual Studio中调用“构建部署包”目标时调用的目标相同。

答案 1 :(得分:0)

对我来说,Sayed's answer不能与命令行msbuild执行一起使用(我需要Publish目标,但想法是相同的):

  

目标依存关系图中存在循环依存关系   涉及目标“构建”

我无法使用DefaultTargets,因为我想在命令行上发布,而只能从VS构建。这是起作用的:

<Project 
      ToolsVersion="12.0" 
      DefaultTargets="BuildAndOrPublish" 
      xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
      <BuildAndOrPublishDependsOn Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">
        Build
      </BuildAndOrPublishDependsOn>  
      <BuildAndOrPublishDependsOn Condition=" '$(BuildingInsideVisualStudio)' != 'true' ">
        Publish
      </BuildAndOrPublishDependsOn>  
  </PropertyGroup>

  <Target Name="BuildAndOrPublish" DependsOnTargets="$(BuildAndOrPublishDependsOn)"/>