Visual studio 帮助一步构建所有项目+;安装程序(.NET+;WiX)

Visual studio 帮助一步构建所有项目+;安装程序(.NET+;WiX),visual-studio,msbuild,build-process,wix,Visual Studio,Msbuild,Build Process,Wix,我在安装程序上有预构建事件,以使用适当的配置等重建项目 如果我在VisualStudio中的WiX(3.0)项目上右键单击“生成/重建”,则所有生成都很好,但如果我尝试在wixproj文件上运行MSBuild,预生成事件将抛出错误 我可以在wixproj上调用candleandlight,但它不会运行预构建事件 预构建事件依赖于VS提供的宏,除了创建另一个项目之外,我不知道如何解决这个问题,基本上只使用项目的预构建事件,这让hack大吃一惊 另一个问题是,我需要从命令行将一个自更新版本号输入Wi

我在安装程序上有预构建事件,以使用适当的配置等重建项目

如果我在VisualStudio中的WiX(3.0)项目上右键单击“生成/重建”,则所有生成都很好,但如果我尝试在wixproj文件上运行MSBuild,预生成事件将抛出错误

我可以在wixproj上调用candleandlight,但它不会运行预构建事件

预构建事件依赖于VS提供的宏,除了创建另一个项目之外,我不知道如何解决这个问题,基本上只使用项目的预构建事件,这让hack大吃一惊

另一个问题是,我需要从命令行将一个自更新版本号输入WiX


我计划只使用一个csproj来处理版本号并进行更新,然后直接使用MSBuild和Candle and Light,但问题是我不知道如何从代码中访问解决方案目录,除了在

中对其进行硬编码之外。我们发现,在使用autobuilder构建解决方案之前,使用实用程序编辑项目本身并转储所有预构建和后构建事件是最简单的方法(在我们的例子中)


这给我们留下了一个很好的、有趣的构建过程,它不依赖于IDE中的任何恶意攻击,并让我们完全控制源代码的来源和构建组件的去向。

我正在使用一种对我来说很好的不同方式

  • 我维护版本号,它只是将其写入环境变量中
  • 我通过运行首先调用“版本号”批处理文件(因此我在名为
    %VersionNumber%
    的环境变量中有版本号)的批处理文件,然后执行
  • MSBuild项目文件生成解决方案,我通过从环境变量(如果存在)中读取.exe来获取中的版本号(然后在预生成事件中使用该版本号创建
    AssemblyInfo
    文件)
    这意味着从VisualStudio生成的.exe版本为0.0,但我可以接受,因为我从批处理文件创建了所有版本
  • 要使用WiX设置创建一个relase构建,我执行,它只调用上面提到的“build”批处理文件,然后调用WiX实用程序
    candle
    light
    ,以构建实际的设置
  • candle
    用于创建设置,我再次从环境变量中获取版本号:
    $(env.VersionNumber)
  • light
    创建的最后一个
    .msi
    文件在其文件名中包含版本号,因为我将文件名(包括带有版本号的环境变量)作为参数传递:
    -out release\msi\bitbucket backup-%VersionNumber%.msi

一开始我花了一段时间才弄明白这一切,但现在我以类似的方式发布了所有项目。

错误是什么?我花了很长时间让WiX路径在开发和构建机器上工作。如果这是你的问题,有很多方法可以做到。至于版本控制,我不知道…Repo被删除了!SDSFDSFD所有链接现在都已修复。回购现在在GitHub上——Bitbucket上的回购是Mercurial回购,在BB完全放弃对Mercurial的支持后,它就消失了。