Visual Studio部署项目:根据构建配置的条件文件

Ste*_*Lai 5 conditional-compilation setup-deployment visual-studio-2008

我想知道是否有可能构建不同的安装程序,其中包含一个部署项目的不同文件,完全取决于构建配置(调试/发布)?

我想这样做是因为:

  1. 在调试阶段,我们想在测试机器上安装一些额外的调试文件(*.pdb)和二进制文件,这样如果出现任何问题,我们就可以知道发生了什么
  2. 在发布阶段,我们不希望用户拥有这些调试文件.我们不想让用户选择安装*pdb - 他们中的大多数都不知道这些文件的用途,并且它们的选项只会引起混淆

我目前遇到的困难:

  1. 我试图打开部署项目文件(*.vdproj),它与其他类型的项目(如CSharp)非常不同.部署项目文件不是XML,我似乎无法编写如下内容:.
  2. 我检查了Microsoft的网站:http://msdn.microsoft.com/en-us/library/cz6k1z02%28v=vs.80%29.aspx没有与构建配置相关的部署条件.
  3. 由于我想根据构建配置设置条件,我想项目文件至少应该能够告诉当前所选配置是什么.但是,部署配置管理器非常简单 - 我只能更改输出,打包,压缩和安装URL.我似乎无法为其他类型的项目定义任何其他宏(例如CSharp)

Mar*_*ros 0

补充一点,我的 WPF 项目也有类似的需求。我有不同的 .config 文件用于不同的构建配置(调试、QA 和发布),这些文件在输出文件夹 /bin/ 中正确生成

我注意到主输出的输出文件列出了来自正确配置文件夹(即 /bin/Release)的 .exe 文件,但是 .config 文件来自项目的根目录(App.config),然后重命名为我的项目名称。

因此,为了解决这个问题,我:

  1. 创建了一个构建后事件,将生成器 .config 文件复制到名为 ConfigDeploy 的文件夹中。

    COPY /Y $(TargetDir)$(TargetFileName).config $(SolutionDir)ConfigDeploy\$(TargetFileName).config

  2. 通过右键单击我的主要输出项,转到“属性”并在“排除过滤器”中设置“*.config”过滤器,忽略了主要输出中的我的 .config 文件

在此输入图像描述

  1. 在“Program Files 文件夹/MyApplication”处创建了我的 .config 文件的文件条目,该条目指向 ConfigDeploy 文件夹中的文件

至于.pdb 文件,则更简单。您只需添加项目输出并选择“调试符号”,然后指向您需要的配置

在此输入图像描述