MSBuild自定义(混淆)构建和发布之间的步骤

时间:2015-04-02 15:16:34

标签: msbuild continuous-integration obfuscation publish smartassembly

我有一个在我的CI服务器上构建的Web应用程序(WebAPI Web服务)。它使用VS2013,发布到文件系统发布配置文件(* .pubxml)以及CI服务器任务中的以下命令构建和发布。

MSBuild %ProjectPath%/MyApp.sln /t:Clean,Build /p:Configuration=Release;DeployOnBuild=True;PublishProfile=TAGBIN;VisualStudioVersion=12.0

但是我还需要对软件进行模糊处理,通过放置在csproj文件中的下面的xml来调用混淆器(Red Gate Smart Assembly)。

<UsingTask TaskName="SmartAssembly.MSBuild.Tasks.Build" AssemblyName="SmartAssembly.MSBuild.Tasks, Version=6.0.0.0,&#xD;&#xA;Culture=neutral, PublicKeyToken=7f465a1c156d4d57" />
<Target Name="PostBuildEvent" Condition=" '$(Configuration)' == 'Release' ">
    <SmartAssembly.MSBuild.Tasks.Build ProjectFile="MyApp.saproj" />
</Target>

这似乎可以构建和发布,但是在检查命令行输出时,我注意到发布是在混淆之前发生的。

显然,在构建之后需要进行模糊处理,但在发布之前,这可能吗?

我尝试了一些方法,包括编辑* .pub.xml文件以通过'BuildDependsOn'节点调用obfuscate,但这会导致混淆在构建之前运行。

<BuildDependsOn>        
    Obfuscate;
    $(BuildDependsOn);
</BuildDependsOn>

似乎不可能将构建与发布分离,我目前唯一的选择是构建它两次,其中第二次发布从第一次构建中获取混淆文件。

1 个答案:

答案 0 :(得分:1)

在MSBuild 4.0及更高版本中,您可以使用BeforeTargetsAfterTargetscontrol target build order

下面的示例介绍了在构建之后但在发布之前执行的新构建步骤:

<Target Name="MyNewBuildStep" AfterTargets="CoreBuild" BeforeTargets="Publish">
    <Message Text="Executing new build step" />
</Target>