1

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,&#xD;&#xA;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 回目のパブリッシュでは、最初のビルドから難読化されたファイルが取得されます。

4

1 に答える 1

1

MSBuild 4.0 以降では、 と を使用BeforeTargetsしてターゲットのビルド順序AfterTargetsを制御できます。

以下の例では、ビルド後、公開前に実行される新しいビルド ステップを紹介しています。

<Target Name="MyNewBuildStep" AfterTargets="CoreBuild" BeforeTargets="Publish">
    <Message Text="Executing new build step" />
</Target>
于 2015-04-07T16:25:25.290 に答える