【问题标题】:Create deployment package during build event在构建事件期间创建部署包
【发布时间】:2013-05-27 11:33:37
【问题描述】:

我有一个项目“A”,需要另一个项目“B”的部署包。

我希望这种情况自动发生,以便“A”依赖于“B”,并且在“A”的预构建事件中,为“B”制作部署包。

我知道如何手动执行此操作(右键单击“B”->构建部署包->构建“A”)并且它工作正常,但是如何按照描述自动化呢?

(“A”其实是一个WIX项目)

【问题讨论】:

    标签: visual-studio-2010 visual-studio wix webdeploy build-events


    【解决方案1】:

    有两种方法可以做到这一点:

    1. 始终在 B 构建后构建 B 的包或
    2. 始终在构建 A 之前构建 B 的包

    第一种的好处是A对B了解的少。第二种的好处是B可以在开发过程中构建,不需要构建包的步骤。

    您可能知道,Visual Studio 项目是 MSBuild 项目。您可以在 Visual Studio 中编辑它们,方法是从解决方案资源管理器的项目上下文菜单中选择卸载项目,然后选择编辑。以这种方式添加构建步骤通常比通过构建事件编辑器更容易,有时甚至是必要的。如果想留下项目文件自定义的线索,可以在 Pre-build 事件字段中添加“rem”命令。

    在以上两种情况下,项目B的Package target必须在项目A的Build目标之前运行。选择上面的第二种情况,将此MSBuild task添加到A的BeforeBuild目标中。

    <MSBuild
        Projects="relative-or-absolute/path/to/B.xxproj"
        Targets="Package">
    </MSBuild>
    

    【讨论】:

      【解决方案2】:

      我最终得到了这个预构建事件代码。不过汤姆斯解决方案可能更好。

      echo off
      
      set THEME_REGKEY=HKLM\Software\Microsoft\MSBuild\4.0
      set THEME_REGVAL=MSBuildOverrideTasksPath
      
      REM Check for presence of key first.
      reg query %THEME_REGKEY% /v %THEME_REGVAL% 2>nul || (echo No theme name present! & exit /b 1)
      
      REM query the value. pipe it through findstr in order to find the matching line that has the value. only grab token 3 and the remainder of the line. %%b is what we are interested in here.
      set THEME_NAME=
      for /f "tokens=2,*" %%a in ('reg query %THEME_REGKEY% /v %THEME_REGVAL% ^| findstr %THEME_REGVAL%') do (
          set THEME_NAME=%%b
      )
      
      REM Possibly no value set
      if not defined THEME_NAME (echo No theme name present! & exit /b 1)
      
      REM replace any spaces with +
      set THEME_NAME=%THEME_NAME: =+%
      
      if errorlevel 1 goto BuildEventFailed
      %THEME_NAME%MSBuild  "$(SolutionDir)Web\Web.csproj" /t:Build;Package /p:Configuration=$(Configuration)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 2013-03-11
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多