FxProtect .NET アセンブリ難読化ツールを使用しており、パッケージ内の難読化された .DLL を Azure にデプロイしたいと考えています。難読化した DLL をパッケージに戻すにはどうすればよいですか? Azure にデプロイされる .CSPKG を解凍し、難読化された DLL を抽出した .CSPKG フォルダーにコピー アンド ペーストしてから、もう一度 zip してデプロイしますか?
2 に答える
難読化する必要があるアセンブリへの参照を含む一連の Azure パッケージがあるという同様の状況があります (それらはパブリック SDK の一部です)。私は Dotfuscator を難読化ツールとして使用していますが、このプロセスは他のベンダーでも機能する可能性があります。この問題を解決した方法は次のとおりです。
私の場合、Azure パッケージには WebRole プロジェクトへの参照が含まれています。その WebRole プロジェクトには、難読化が必要な他のいくつかのライブラリ プロジェクトへのプロジェクト参照が含まれています。
ビルド プロセスには 3 つのパスがあります。
- すべてのライブラリと Web プロジェクトを含むソリューションをビルドします。必須ではありませんが、Visual Studio 構成マネージャーを使用して Azure パッケージ プロジェクトのビルドを無効にしました。
- 難読化ツールを実行して、それを必要とするアセンブリを難読化します。
Publish
(ターゲットを介して) Azure パッケージのみをビルドしてパッケージ化し、参照されているプロジェクトもビルドしないようにMSBuild に指示します。
その最後の部分が重要です。参照されているプロジェクトをビルドしないように MSBuild に指示しない場合、すべてのプロジェクトが再ビルドされ、難読化が解除されます。BuildProjectReferences=false
これを行うには、パッケージをビルドするときにプロパティを含めます。
MSBuild スクリプトから Azure パッケージをビルドするには、次を使用します。
<!-- This should be run after Obfuscation to ensure the SDK assemblies included in the packages are obfuscated -->
<MSBuild Projects="..\Path\My.CloudService.ccproj" Targets="Publish" Properties="BuildProjectReferences=false;PublishDir=..\artifacts\MyCloudService" />
Visual Studio または MSBUILD からパッケージ化する場合は、生成された .DLL を難読化するビルド後のイベントを実行することをお勧めします。