【问题标题】:Build website deployment package as a postbuild event构建网站部署包作为构建后事件
【发布时间】:2010-07-01 13:43:58
【问题描述】:

我正在使用 Visual Studio 2010。我有一个网站项目,我想在每次构建项目时构建一个网站部署包。基本上,我正在寻找一些构建后 MSBuild 命令的示例,该命令基本上与网站右键菜单中的“构建部署包”选项执行相同的操作。

【问题讨论】:

  • 我们真正要做的是将 2 个网站项目和 2 个 databaseGeneration 项目的输出打包到一个文件夹中。也许有更好的方法来做到这一点。结构
    website1
    websiteDeployment
    sqlScripts
    website2
    websiteDeployment
    sqlScripts

标签: visual-studio-2010 msbuild msdeploy


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 这不起作用。存在涉及目标“构建”的循环依赖。 (包调用Build,Build调用Package...)
  • error MSB4006:在涉及目标“Build”的目标依赖图中存在循环依赖。
  • 我在另一台电脑上试过了,它可以工作。所以没关系^^
  • 首先我得到了循环依赖错误,但是将 Package 更改为 CreatePackage 解决了问题。
  • 我得到了循环依赖(但仅在从命令行构建时,而不是在 VS 内部)。 “CreatePackage”不起作用(目标不存在)。为了获得一个包作为每个构建的一部分,我将 Project 元素的 DefaultTargets 更改为“Build;Package”,这似乎解决了 Sayed 关于在构建期间不打包的担忧(从 VS 内部)但支持生成一个包作为一部分命令行构建
【解决方案2】:

对我来说,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)"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多