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>
これは正常にビルドおよび公開されているように見えますが、コマンド ライン出力を調べたところ、難読化の前に公開が行われていることがわかりました。
明らかに難読化はビルド後に行う必要がありますが、公開前に行うことは可能ですか?
「BuildDependsOn」ノードを介して難読化を呼び出すように *.pub.xml ファイルを編集するなど、いくつかのことを試しましたが、これによりビルドの前に難読化が実行されます。
<BuildDependsOn>
Obfuscate;
$(BuildDependsOn);
</BuildDependsOn>
ビルドをパブリッシュから分離することは不可能に思えます。現時点で私が持っている唯一のオプションは、2 回ビルドすることです。2 回目のパブリッシュでは、最初のビルドから難読化されたファイルが取得されます。