在 Visual Studio 中不同的构建配置中使用不同的预构建事件

5
在Visual Studio中,是否可以针对不同的构建配置使用不同的预构建事件呢? 例如,我想为Beta和Live系统分别创建一个发布配置,并在编译之前将相关的app.[type].config复制到app.config。 目前,配置设置都嵌入到.settings文件中,并使用默认app.config文件中的设置。
3个回答

2

或者只需将条件放在您的目标上...例如:

Condition="'$(Configuration)' == 'Debug'" 

如果您使用的是Visual Studio VB/C#的简单后期构建事件,您可以手动编辑项目文件,在PreBuildEvent/PostBuildEvent属性标签上添加这样的条件,并在Release中重复标签。

Dan(msbuild开发者)


1
从此刻开始,VS(至少2010)将显示PostBuild为空,在编译过程中会发生魔法,在大型团队中,这最终会导致混乱和浪费时间。是一个好的解决方案,但潜在危险。 - durilka

1
要在Visual Studio中为不同的配置使用不同的构建事件,请打开项目的csproj文件,在预构建部分进行设置。
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Condition="'$(Configuration)'=='Release'" Command="echo Release" />
    <Exec Condition="'$(Configuration)'=='Debug'" Command="echo Debug" />
  </Target>

如果满足此条件,"Command"参数中的命令才会被执行。

1

根据您的具体情况,有几种方法可以实现:

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

IF EXISTS $(ProjectDir)app.$(ConfigurationName).config 
    COPY $(ProjectDir)app.$(ConfigurationName).config $(ProjectDir)app.config

选项2:在您的项目文件中添加一个“BeforeCompile” MSBuild目标:

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

选项3:使用配置文件转换;此VSIX插件将Web.config转换功能添加到非Web项目中。这些是XSLT文件,允许您在构建时重写配置文件(与Web项目不同,在Web项目中它发生在发布时)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接