我有一个构建在我的 CI 服务器上的 Web 应用程序(WebAPI Web 服务)。它使用 VS2013、发布到文件系统发布配置文件 (*.pubxml) 和来自 CI 服务器任务的以下命令构建和发布良好。
MSBuild %ProjectPath%/MyApp.sln /t:Clean,Build /p:Configuration=Release;DeployOnBuild=True;PublishProfile=TAGBIN;VisualStudioVersion=12.0
但是我还需要混淆软件,混淆器(Red Gate Smart Assembly)是通过放置在 csproj 文件中的以下 xml 调用的。
<UsingTask TaskName="SmartAssembly.MSBuild.Tasks.Build" AssemblyName="SmartAssembly.MSBuild.Tasks, Version=6.0.0.0,
Culture=neutral, PublicKeyToken=7f465a1c156d4d57" />
<Target Name="PostBuildEvent" Condition=" '$(Configuration)' == 'Release' ">
<SmartAssembly.MSBuild.Tasks.Build ProjectFile="MyApp.saproj" />
</Target>
这似乎可以很好地构建和发布,但是在检查命令行输出时,我注意到发布发生在混淆之前。
显然混淆需要在构建之后发生,但在发布之前,这可能吗?
我尝试了一些方法,包括编辑 *.pub.xml 文件以通过“BuildDependsOn”节点调用混淆,但这会导致混淆在构建之前运行。
<BuildDependsOn>
Obfuscate;
$(BuildDependsOn);
</BuildDependsOn>
似乎不可能将构建与发布分离,我目前唯一的选择是构建它两次,第二个发布从第一个构建中提取混淆文件。