Visual studio 在Visual Studio中对不同的生成配置使用不同的预生成事件

Visual studio 在Visual Studio中对不同的生成配置使用不同的预生成事件,visual-studio,visual-studio-2010,Visual Studio,Visual Studio 2010,是否可以在Visual Studio中对不同的生成配置使用不同的预生成事件? 例如,我想要beta和live系统的发布配置,并在编译之前将相关的app.[type].config复制到app.config 此时,使用默认app.config文件中的设置将配置设置烘焙到.settings文件中。根据具体情况,您可以通过多种方式执行此操作: 选项1:检查预构建脚本中的$(ConfigurationName)变量,如下所示: IF EXISTS $(ProjectDir)app.$(Configura

是否可以在Visual Studio中对不同的生成配置使用不同的预生成事件? 例如,我想要beta和live系统的发布配置,并在编译之前将相关的app.[type].config复制到app.config


此时,使用默认app.config文件中的设置将配置设置烘焙到.settings文件中。

根据具体情况,您可以通过多种方式执行此操作:

选项1:检查预构建脚本中的$(ConfigurationName)变量,如下所示:

IF EXISTS $(ProjectDir)app.$(ConfigurationName).config 
    COPY $(ProjectDir)app.$(ConfigurationName).config $(ProjectDir)app.config
选项2:将“BeforeComile”MSBuild目标添加到项目文件中:

<Target Name="BeforeBuild">
    <!-- MSBuild Script here -->
</Target>


选项3:使用配置文件转换;将web.config转换功能添加到非web项目。这些是XSLT文件,您可以在构建时重写配置文件(与web项目不同,web项目在发布时重写配置文件)。

或者只需在目标上设置条件。。。例如

Condition="'$(Configuration)' == 'Debug'" 
。。或者你的任务

如果您使用的是Visual Studio VB/C#简单的生成后事件,则可以手动编辑项目文件,将这些条件放在PreBuildEvent/PostBuildEvent属性标记上;然后重复标签以释放


Dan(msbuild dev)

要在visual studio中为不同的配置使用不同的生成事件,请打开项目的cs proj文件。在预构建部分

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Condition="'$(Configuration)'=='Release'" Command="echo Release" />
    <Exec Condition="'$(Configuration)'=='Debug'" Command="echo Debug" />
  </Target>

“command”参数中的命令只有在满足此条件时才会执行。

从这一刻起,VS(至少2010年)将显示PostBuild为空,在编译过程中,魔术将发生,在大型团队中,这将最终导致混乱和时间损失。好的解决方案,但有潜在危险。