開発チームの多くは、ソフトウェアのビルドに、継続的インテグレーションと継続的デリバリー(CI/CD)パイプライン、あるいは他の自動ビルド システムを用いています。 クラウド サービスとしても、オンプレミス製品としても、さまざまなソリューションが存在しています。 代表例としては、Jenkins、TeamCity、および Azure Pipelines(クラウドでホストされている Azure DevOps サービスとオンプレミスの Azure DevOps サーバーの両方で利用でき、正式には Microsoft Team Foundation Server または TFS と呼ばれています)があります。
このようなシステムは独立したコンピューターを使用してビルド手順を実行します。 これらのコンピューターは通常「ビルド エージェント」と呼ばれますが、システムによっては「ノード」や「エグゼキュータ」と呼ばれることがあります。 ビルド エージェントの多くは仮想マシンですが、専用の「ビルド ファーム」にまとめられることもあります。
このページでは、自動ビルド処理の一環として、ビルド エージェントで Dotfuscator をセットアップ、アクティブ化、および使用する方法について説明します。
インストール パッケージの選択
Dotfuscator には、Windows インストーラー(.msi
)と NuGet パッケージの 2 つのインストール パッケージがあります。 Windows コンピューターに Dotfuscator をインストールする場合は、どちらのパッケージも使用できます。 macOS および Linux コンピューターで使用できるのは、NuGet パッケージのみです。 Dotfuscator の機能は、使用するパッケージおよび Dotfuscator を実行するオペレーティング システムによって異なります。
インストール パッケージ | Windows インストーラー | NuGet パッケージ | |
---|---|---|---|
インストール OS | Windows | Windows | macOS / Linux |
インストールされるコンポーネント | |||
MSBuild ターゲットとタスク | ✅ | ✅ | ✅ |
コマンド ライン インターフェイス | ✅ a | ✅ b | ✅ b |
構成エディター | ✅ | ❌ | ❌ |
インストール | |||
管理者権限が必要ですか? | ✅ | ❌ | ❌ |
既知の場所に配置しますか? | ✅ | ❌ | ❌ |
ビルド時にプロビジョニングできますか? | ❌ | ✅ | ✅ |
複数のバージョンをサイド バイ サイドで持つことができますか? | ❌ | ✅ | ✅ |
ターゲットとするコードの保護... | |||
.NET Framework | ✅ | ✅ | ❌ |
.NET 5 / .NET Core / .NET Standard | ✅ | ✅ | ✅ |
Xamarin Android / Xamarin iOS / Mono | ✅ | ✅ | ✅ |
MAUI Android | ✅ | ✅ | ✅ |
-
a .NET Framework 4.7.2 以降で実行。
-
b .NET 6 以降で実行。
NuGet パッケージは、サポートされる任意の OS(Windows、macOS、または Linux)で使用できます。 ビルド エージェントごとに 1 回のみパッケージをプロビジョニングするか、またはビルドを実行するたびに、割り当てられたエージェントでビルド スクリプトにパッケージをプロビジョニングさせることができます。 後者の場合は、動的にプロビジョニングされたビルド エージェント(ビルド ジョブごとに割り当ておよび割り当て解除される)で Dotfuscator を使用できるようになります。このような例として、Microsoft がホストするエージェントで Azure Pipelines を使用する場合などがあります。
また、ビルド エージェントが Windows で実行されており、事前プロビジョニング済みである(長時間にわたって実行され、ビルド ジョブ間で共有する)場合は、ビルド エージェントごとに 1 回 Windows インストーラーを実行するオプションもあります。 環境によっては、NuGet パッケージを使用するよりも、こちらの方が便利かもしれません。
Windows インストーラーを使用したインストール
管理者アクセス権を持つビルド エージェントに Dotfuscator をインストールするには、開発用コンピューターと同じ手順に従ってください。
推奨されるアプリケーションの保護の手順に従った場合は、Windows インストーラーが完了した直後に、ビルド エージェントで Dotfuscator 統合 MSBuild プロジェクト(.csproj
、.vbproj
など)をビルドできるようになります。 これは、プロジェクトの Dotfuscate
タスク経由で Dotfuscate を呼び出す、カスタム MSBuild プロジェクトの場合にも当てはまります。 ビルドで Dotfuscator のターゲットまたはタスクの検索時にエラーが発生した場合は、トラブルシューティングを参照してください。
Dotfuscator コマンド ライン インターフェイス(CLI)は、Windows インストーラーによってプロビジョニングされている場合は、完全な .NET Framework コンソール アプリケーション(.exe
)です。 通常、これは PATH
にあり、dotfuscator.exe
として呼び出すことができます。そうでなければ、DOTFUSCATOR_HOME
環境変数を使用して見つけることができます。 Azure Pipelines を使用している場合は、代わりに、Azure パイプライン拡張を使用してコマンド ライン インターフェイスを呼び出せます。
NuGet パッケージを使用したインストール
Dotfuscator NuGet パッケージを使用して、ビルド エージェントに Dotfuscator をインストールすることができます。 ビルド エージェントに NuGet パッケージをインストールするには、以下を行います。
- 組織内のディレクトリまたは NuGet フィードにパッケージをホストします。
- ビルド エージェントに NuGet パッケージをプロビジョニングします。
- ビルド エージェントで Dotfuscator をアクティブ化します。
これで、ビルド エージェントで Dotfuscator を使用できます。
NuGet パッケージのホスト
Dotfuscator NuGet パッケージは、組織での内部使用のために、Dotfuscator Professional のライセンス ユーザーにプライベートで配布されます。 Dotfuscator のダウンロード用 Web ページで、Dotfuscator Professional の NuGet パッケージ(.nupkg
)をダウンロードします。
開発者およびビルド エージェントが NuGet パッケージを使用きるようにするには、組織内のファイルをホストする必要があります。 NuGet をサポートする専用のアーティファクト リポジトリを使用するか、または単純に、共有ファイル システムの場所にディレクトリを作成することができます。
専用のアーティファクト リポジトリ(パッケージ リポジトリ、ソフトウェア リポジトリとも呼ばれます)によって提供される NuGet フィードでパッケージをホストすることができます。 互換性のあるシステムには、Artifactory のようなオンプレミス ソフトウェアや、Azure Artifacts のようなクラウド ベースのサービスがあります。 クラウド ベースのサービスを使用する場合でも、組織内のライセンス ユーザーのみが Dotfuscator NuGet パッケージを利用できるようにする必要があります。
また、ディレクトリをローカル NuGet フィードとして使用することにより、NuGet パッケージをホストすることもできます。 ディレクトリは、ビルド エージェントにアクセス可能である必要があります。たとえば、ネットワーク共有(例:\\server\share\nuget
)上や、プロジェクトのバージョン管理システムのソース ツリー内などにある必要があります。 nuget add
コマンドを使用してディレクトリを作成するか、またはディレクトリを作成して、そこに .nupkg
をコピーするだけです。
NuGet パッケージをホストしたら、NuGet フィード URL を書き留めておきます。 アーティファクト リポジトリを使用している場合は、付属のドキュメントおよびユーザー インターフェイスを参照して、適切な URL を取得します。 ファイル システム ディレクトリを使用している場合は、そのディレクトリのパスが URL です。
NuGet パッケージのプロビジョニング
Dotfuscator NuGet パッケージがホストされたら、パッケージをビルド エージェントにプロビジョニングできます。 以下のタブで説明するように、これを行う方法はいくつかあります。
nuget
コマンド ライン インターフェイス の install
コマンドを使用して、パッケージをプロビジョニングできます。
-
最初に、ビルド エージェントで
nuget
CLI を利用できることを確認します。 ほとんどの場合PATH
で利用できるので、nuget help
コマンドを実行して、インストールされていることを確認できます。-
macOS では、Visual Studio for Mac がインストールされている場合、次のパスで
nuget
CLI を実行できます。/Library/Frameworks/Mono.framework/Commands/nuget
-
一部の自動ビルド システムでは、NuGet CLI をビルド エージェントにインストールする方法を提供できます。 たとえば、Azure Pipelines には NuGet Tool Installer タスクがあります。
-
NuGet CLI がインストールされていない場合は、この手順に従ってインストールすることができます。
-
-
NuGet CLI の
install
コマンドを使用します。nuget install PreEmptive.Protection.Dotfuscator.Pro[.Eval] -Version 7.2.0 -OutputDirectory "{out dir}" -ExcludeVersion -Source "{feed url}"
ここで、
-
[.Eval]
は、Dotfuscator Professional の評価中である場合は.Eval
になり、そうでない場合は空の文字列になります。 -
{out dir}
は、NuGet パッケージが抽出される場所です。 -
{feed url}
は、パッケージをホストするときに書き留めたた NuGet フィード URL です。
-
これは、{out dir}/PreEmptive.Protection.Dotfuscator.Pro[.Eval]
に Dotfuscator をインストールします。 後のために、このインストール ディレクトリを書き留めておきます。
含まれているシェル スクリプトを呼び出す前に、それらを実行可能としてマークする必要があります。 これは通常、chmod +x
を呼び出すことによって行い、引数としてスクリプトの場所を渡します。
NuGet パッケージのアクティブ化
Dotfuscator を使用するには、事前にビルド エージェントでアクティブ化しておく必要があります。 ライセンス文字列に DOTFUSCATOR_LICENSE
環境変数を設定することをお勧めします。これにより、Dotfuscator は実行時に自身でアクティブ化するようになります。 また、Dotfuscator への引数としてライセンス文字列を渡すこともできます。これは、.dotfuscator.user.props
ファイルの DotfuscatorLicense
を設定するなどして行えます。
一部のビルド システムには、ライセンス キーや機密性の高い文字列を格納しておき、ビルド中にそれらを環境変数に公開するための方法が組み込まれています。 たとえば、Azure Pipelines には秘密の変数があります。 このような機能を使用すると、ビルド中にライセンス キーを保護するのに役立ちます。
環境変数を設定するときに、PREEMPTIVE_TELEMETRY_OPT_OUT
変数を使用してカスタマー フィードバック オプションを設定することもできます。
NuGet パッケージの使用
ビルド マシンに Dotfuscator がインストールされアクティブ化されたら、ビルドの一部として Dotfuscator を使用することができます。 ビルド ステップでは、プロビジョニング中に書き留めたインストール ディレクトリの Dotfuscator を使用する必要があります。
下記の MSBuild コンポーネント セクションおよびコマンド ライン インターフェイス セクションで例を示します。 推奨されるアプリケーションの保護の手順に従った場合は、「MSBuild コンポーネント」セクションをお読みください。
MSBuild コンポーネント
MSBuild ターゲットまたはタスクを使用している場合は、ビルド ターゲットでビルドするときに DotfuscatorMSBuildDir
プロパティをオーバーライドする必要があります。 プロパティの値を {install dir}/tools/msbuilddir
にします。ここで、{install dir}
はインストール ディレクトリです。
これはさままざな方法で行うことができます。
-
DotfuscatorMSBuildDir
環境変数を設定する。 -
ビルド ジョブを実行するユーザーのユーザー ディレクトリにある、
.dotfuscator.user.props
ファイルのDotfuscatorMSBuildDir
プロパティを設定する。 -
プロジェクトのディレクトリの上位ディレクトリにある、
Directory.Build.props
またはDirectory.Build.targets
ファイルのDotfuscatorMSBuildDir
プロパティを設定する。 -
msbuild
、dotnet
、または類似する MSBuild ベースのステップを呼び出すときに、引数でDotfuscatorMSBuildDir
プロパティを設定する。 以下に例を挙げます。-
msbuild
コマンド ラインを使用:msbuild YourSolution.sln -p:DotfuscatorMSBuildDir="{install dir}/tools/msbuilddir"
-
dotnet
コマンド ラインを使用:dotnet build -p:DotfuscatorMSBuildDir="{install dir}/tools/msbuilddir"
-
Azure Pipelines 手順で、YAML 構文の
msbuildArgs
入力引数を使用:- task: VSBuild@1 displayName: 'Build solution **/*.sln' inputs: solution: '$(Parameters.solution)' msbuildArgs: '-p:DotfuscatorMSBuildDir="{install dir}/tools/msbuilddir"' platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)'
メモ: Azure Pipelines で NuGet パッケージを使用しているときにエラーが発生した場合は、トラブルシューティングを参照してください。
-
コマンド ライン インターフェイス
Dotfuscator コマンド ライン インターフェイス(CLI)は、NuGet パッケージによってプロビジョニングされている場合は、フレームワーク依存展開の .NET 6 コンソール アプリケーション(.dll
)です。 .NET Core CLI(dotnet
)を使用して呼び出すことができます。
dotnet "{install dir}/tools/programdir/netcore/dotfuscator.dll" {args}
ここで、
-
{install dir}
は、インストール ディレクトリのパスです。 -
{args}
は CLI への引数で、通常、ビルドする Dotfuscator 構成ファイルのパスを含みます。
さらに、netcore
ディレクトリには、.NET Core と完全版 Framework のどちらのコマンド ラインとも互換性のある方法で、より自然に Dotfuscator コマンド ラインを呼び出せるようにするスクリプトがあります。
-
dotfuscator
は、Linux および macOS システムで使用される bash シェル スクリプトです。 -
dotfuscator.cmd
は、Windows システムで使用される batch スクリプトです。
Azure Pipelines を使用している場合は、代わりに、そのビルド システムの拡張機能を使用してコマンド ライン インターフェイスを呼び出すことができます。Azure パイプライン拡張の使用を参照してください。
Azure パイプライン拡張の使用
Azure Pipelines から Dotfuscator コマンド ラインを呼び出す場合、コマンド ラインを手動で呼び出すのではなく、Dotfuscator Professional コマンド ライン タスクを使用することができます。 ほとんどの Dotfuscator Professional ユーザーは、推奨されるアプリケーションの保護の手順に従う必要があることに留意してください。これらの手順に従っていれば、Dotfuscator のコマンド ラインを呼び出す必要も、この拡張機能を使用する必要もありません。 この拡張機能は、コマンド ライン インターフェイスを呼び出す代替アプローチを使用したユーザーのみを対象としています。
拡張機能をインストールして使用する方法の手順については、Visual Studio Marketplace で Dotfuscator Professional ビルド タスクを参照してください。
dotfuscatorHome
)入力フィールドは、Windows インストーラーを使用してプロビジョニングした場合には、空にする必要があります。 NuGet パッケージを使用してプロビジョニングした場合は、このフィールドを次のように設定します。
$(System.DefaultWorkingDirectory)/{install dir}/tools/programdir/netcore
{install dir}
はインストール ディレクトリで、バージョン管理のルート ディレクトリからの相対パスです。