NuGet パッケージ Ultimate
Babel Obfuscator の NuGet パッケージを使うと、製品をインストールしなくても、.NET SDK のある任意のビルド用コンピューターや CI サーバーで、Windows、Linux、macOS を問わず Babel を実行できます。
Babel Obfuscator には 2 つの NuGet パッケージがあります。どちらも Ultimate エディションと、Babel Licensing のサイトエディション(Server と Data Center)に付属し、どちらも nuget.org では公開されていません。パッケージは製品と一緒に提供されるので、パッケージのセットアップで説明しているとおり、プライベートフィードまたはローカルフォルダーでホストします。
| パッケージ | 提供する機能 |
|---|---|
Babel.Obfuscator | ビルドへの統合。パッケージを参照すると、Babel の MSBuild タスクがプロジェクトに追加され、ビルドの適切な位置で実行されるため、dotnet build、dotnet publish、Visual Studio が難読化された出力を生成します。このセクションの大部分は、このパッケージについて説明しています。 |
Babel.Obfuscator.Tool | dotnet ツールとしてパッケージ化された babel コマンドライン。ビルドの外で、スクリプトから難読化するためのものです。Babel Obfuscator ツールを参照してください。 |
Babel タスクではなくパッケージを使用する理由
Babel タスクは、いつでも手作業でプロジェクトに追加できます。パッケージはそれを代わりに行い、さらに、SDK スタイルのプロジェクトでは手作業での解決が難しい問題も解決します。.NET SDK はコンパイル後に IL レベルのステップ(依存関係の解決、トリミング、単一ファイルへのバンドル、AOT コンパイル)をいくつか実行し、難読化はそのすべてより前に行う必要があります。パッケージは Babel タスクをコンパイラーの直後に挿入し、中間フォルダー obj にあるアセンブリを処理するため、ビルドの以降のステップはすべて、難読化されたアセンブリを処理します。ビルドパイプラインを参照してください。
配置のほかにも、パッケージは次のことを行います。
- サポートされるすべての MSBuild ホスト、つまり .NET Framework の MSBuild、Mono、6.0 から 10.0 までの .NET SDK に対応する Babel のビルドツールを同梱し、適切なものを自動的に選択します。
- プロジェクトがすでに持っている情報から Babel タスクを構成します。プロジェクトの参照から得たアセンブリの検索ディレクトリ、厳密名キー、デバッグシンボル、ルールファイル、ライセンスファイルです。
- Visual Studio のデザイン時ビルドと、コンパイラーが実行されなかったインクリメンタルビルドをスキップし、IDE の応答性を保ちます。
- アセンブリをマージまたは埋め込む場合に、
.deps.jsonファイルと公開されるファイル一式を更新して、dotnet publishの一貫性を保ちます。
要件
- 6.0 から 10.0 までの .NET SDK、Visual Studio 2022 以降、または Mono の MSBuild。
MSBuild.exeでビルドする .NET Framework プロジェクトもサポートされます。 - 有効なライセンス。
babel.licensesファイルまたはライセンスキーです(ライセンスのアクティベーションを参照)。ライセンスがない場合、パッケージは評価モードで動作し、難読化されたアセンブリは短期間で動作しなくなります。 - ビルドからアクセスできる NuGet フィードでホストされたパッケージ(インストールを参照)。
クイックスタート
パッケージを追加する
Babel.Obfuscator パッケージを、お使いのフィード、またはパッケージソースとして登録したローカルフォルダーに追加します。
パッケージを参照する
難読化するプロジェクトからパッケージを参照します。
<ItemGroup>
<PackageReference Include="Babel.Obfuscator" Version="12.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>ライセンスを指定する
babel.licenses をソリューションフォルダーにコピーするか、BabelLicense プロパティを設定します。
難読化を設定する
必要な難読化の設定を MSBuild プロパティとして追加します。たとえば、次のとおりです。
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<StringEncryption>stream</StringEncryption>
<ControlFlowObfuscation>if=on;switch=on;call=on</ControlFlowObfuscation>
<ResourceEncryption>true</ResourceEncryption>
</PropertyGroup>ビルドする
ビルドします。Babel のログがビルド出力に表示され、出力アセンブリが難読化されます。

Visual Studio に表示された Babel Obfuscator の出力
このセクションのページ
- パッケージのセットアップ:パッケージのホスティング、参照の追加、ライセンスのアクティベーション、最初のビルドの検証。
- 難読化の設定:Babel のすべての機能を制御する MSBuild のプロパティと項目。バージョン 12 で導入された設定も含みます。
- ビルドパイプライン:難読化が実行される場所、その移動方法、拡張できるターゲット、公開、ビルドツールが選択される仕組み。
- Babel Obfuscator ツール:dotnet ツールとしての
babelコマンドライン。 - パッケージリファレンス:パッケージが定義するすべてのプロパティ、項目、ターゲットと、Babel タスクの属性との対応。
サンプル
このマニュアルの次のサンプルは、Babel Obfuscator の NuGet パッケージを使用しています。
パッケージとカスタムルールで .NET for Android アプリを難読化します。
MAUI アプリを保護し、iOS に適したリンカーモードを選択します。
BeforeObfuscate ターゲットを使った、アセンブリ間のリネームと公開。
GitHub Packages からパッケージをインストールし、ライセンスをシークレットとして渡します。
マップファイルを使って、難読化されたアセンブリに対して単体テストを実行します。
ClickOnce アプリケーションを難読化します。
Blazor アプリケーションの Razor ページをルールで保護します。
Azure Pipelines のビルドでパッケージをセットアップします。
AppVeyor のビルドにパッケージを導入します。