Skip to Content
新しいバージョン 12 を公開しました 🎉

Lic MSBuild タスク Server

Lic タスクは、MSBuild プロジェクトから lic コマンドラインを実行します。これにより、コマンドラインと同じプロパティを使って、ビルドでライセンスを生成、署名できます。

Lic タスクは Babel.Build.dll に含まれています。これは、難読化ツールの Babel タスクを提供するのと同じアセンブリです。このタスクは、プロパティと項目から lic のコマンドラインを組み立てて lic.exe を実行するため、リファレンスで説明している内容はすべてプロジェクトファイルから利用できます。このタスクを使用するのは、次の 2 つです。

  • 独自の MSBuild プロジェクト:たとえば、テスト対象のアプリケーション用にテストライセンスを発行したり、ビルドサーバーから顧客向けのライセンスを生成したりする場合。
  • .lcproj プロジェクトファイル:lic --makeproject がコマンドラインから書き出し、lic --project が再び実行するファイルです。プロジェクトファイルを参照してください。

タスクの登録

Babel.Build.dll を指す UsingTask 要素で、タスクのアセンブリを参照します。Babel の zip パッケージでは、このアセンブリは MSBuild フォルダーにあります。babel_net472_<version>.zip を展開したフォルダーを BabelDir に設定した場合は、次のようになります。

<UsingTask TaskName="Lic" AssemblyFile="$(BabelDir)\MSBuild\Babel.Build.dll" />

タスクは、LicDirectory で設定したフォルダーにある lic.exe を実行します。設定がない場合、タスクは Babel.Build.dll と同じフォルダーを探し、次に BABEL_INSTALL_DIRECTORY 環境変数が示すフォルダーを探します。lic.exe は、展開した zip パッケージの MSBuild フォルダーではなくルートにあるため、後述の例のように、LicDirectory にはそのルートを設定してください。

LicDirectory を設定すると、タスクは lic.exe を実行します。これには Windows が必要です。babel_net80、babel_net90、babel_net100 の zip パッケージにも、MSBuild/Babel.Build.dll と lic.dll が含まれています。MSBuild が dotnet ホストで実行され、LicDirectory なしでタスクが lic.dll を見つけた場合、タスクは dotnet を通じてそれを実行します。Babel Licensing ツールしか使用できない環境では、代わりに Exec タスクから lic を実行してください。スイッチは同じです。

完全な例

次のプロジェクトは、ビルドの後に、ビルドしたアセンブリ用の署名付きライセンスを生成します。ライセンシー、製品、機能、フィールド、制限は MSBuild の項目で、そのメタデータが、対応するスイッチの key=value のペアになります。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="Lic" AssemblyFile="$(BabelDir)\MSBuild\Babel.Build.dll" /> <PropertyGroup> <BabelDir>C:\Tools\babel_net472</BabelDir> <LicenseKeyFile>$(MSBuildProjectDirectory)\keys\signing.pem</LicenseKeyFile> <LicenseOutputFile>$(OutDir)MyApp.licenses</LicenseOutputFile> </PropertyGroup> <ItemGroup> <Licensee Include="Contoso"> <Id>C-1001</Id> <Company>Contoso Ltd</Company> <Email>info@contoso.com</Email> </Licensee> <Product Include="MyApp"> <Id>MYAPP</Id> <Version>2.1</Version> <Url>https://contoso.example</Url> </Product> <Feature Include="Pro"> <Data>1</Data> </Feature> <Field Include="Seats"> <Value>25</Value> </Field> <Restriction Include="Trial"> <TrialDays>30</TrialDays> <RunInstances>2</RunInstances> </Restriction> <Restriction Include="Hardware"> <HardwareKey>GPHI6-128DI-6196C-KN5LV-BCDRE</HardwareKey> </Restriction> </ItemGroup> <Target Name="MakeLicense" AfterTargets="Build"> <Lic LicDirectory="$(BabelDir)" InputFile="$(TargetPath)" OutputFile="$(LicenseOutputFile)" KeyFile="$(LicenseKeyFile)" Sign="rsa" ExpireDate="365" Encoding="utf-8" Licensee="@(Licensee)" Product="@(Product)" Features="@(Feature)" Fields="@(Field)" Restrictions="@(Restriction)" /> </Target> </Project>

これは、次のコマンドラインと同等です。

lic MyApp.dll --keyfile keys\signing.pem --sign rsa --expiredate 365 --encoding utf-8 --licensee name=Contoso --licensee id=C-1001 --licensee company="Contoso Ltd" --licensee email=info@contoso.com --product name=MyApp --product id=MYAPP --product version=2.1 --product url=https://contoso.example --feature def=... --field def=... --trial days=30 --trial instances=2 --hardware key=GPHI6-128DI-6196C-KN5LV-BCDRE --output MyApp.licenses

タスクが組み立てた正確なコマンドラインを確認するには、ProvideCommandLineArgs="true" を設定して、CommandLineArgs 出力項目を読み取ります。

タスクのプロパティ

各プロパティは、リファレンスにある同じ意味のスイッチに対応します。スカラープロパティは文字列を受け取り、項目プロパティは項目リストを受け取ります。

入力と出力

プロパティスイッチ説明
InputFile最初の引数ライセンスの対象となるアセンブリ、または更新や検証の対象となるライセンスファイル。
Project--project.lcproj プロジェクトファイル。その設定が最初に適用されます。
Assemblies--assemblyライセンスに追加するほかのアセンブリを、ファイルまたは名前で指定する項目。
OutputFile--output出力するライセンスファイル。
Format--formatxml、serial、base32、ascii のいずれか。タスクのコンソール出力用に json または ndjson も指定できます。
Encoding--encodingXML ライセンスファイルの文字エンコーディング。
XmlDeclaration--[no]xmldeclarationXML 宣言を書き出すかどうか。
GenerateKeyInfo--[no]keyinfoRSA 署名要素に公開キーの情報を含めるかどうか。
MakeProject--makeproject実際に使用された設定で .lcproj プロジェクトファイルを書き出します。
GenerateLogFile、LogFile--logfileコンソール出力をログファイルにリダイレクトします。ファイル名は、LogFile で指定するか、出力ファイルの名前から決まります。

キーと署名

プロパティスイッチ説明
KeyFile--keyfilePEM、SNK、または PFX のキーファイル。
KeyContainer--keynameキーコンテナーの名前。
KeyPwd--keypwdPFX キーファイルのパスワード。
KeyGen--keygenrsa または ecdsa。新しいキーペアを生成して KeyFile に書き出します。
KeySize--keysizeKeyGen のキーサイズ。
Sign--signライセンスに署名します。rsa、ecdsa、dsig のいずれか。このプロパティが空の場合、ライセンスは署名されません。
Verify--verifytrue を指定すると、ライセンスを生成する代わりに InputFile の署名を検証します。

ライセンスの内容

プロパティスイッチ説明
LicenseId--idライセンス ID。
LicenseType--typeライセンスの種類を表すテキスト。
IssueDate--issuedate発行日。
ExpireDate--expiredate有効期限、または日数。
Licensee--licensee1 つの項目。Include が名前で、メタデータは Id、Name、Company、Email。
Product--product1 つの項目。Include が名前で、メタデータは Id、Name、Version、Copyright、Description、Url。
Components--componentライセンス対象のコンポーネントを指定する項目。
Features--feature項目。Include はファイルパス、または機能の名前です。名前の場合は、メタデータ Id、Name、Description、Key、Data、ExpireDate、SupportExpireDate を指定できます。
Fields--field項目。Include はファイルパス、またはフィールドの名前です。名前の場合は、メタデータ Id、Name、Value を指定できます。
Restrictions制限のスイッチInclude で制限の種類を選択する項目。制限の項目を参照してください。
Update--updateInputFile 内の、指定した ID のライセンスを更新します。all を指定すると、すべてのライセンスを更新します。

制限の項目

Restriction 項目の Include の値によってスイッチが選択され(大文字と小文字は区別されません)、メタデータがその key=value のペアになります。それ以外の Include の値はカスタム制限の名前として扱われ、各メタデータをペアとして --restriction に渡されます。カスタムの種類には、Register に指定した拡張アセンブリが必要です。

Includeスイッチメタデータ
Trial--trialTrialDays(または ExpireDays)、RunCount、RunInstances(または AllowedInstances)、RunTime(または UsageTime)、Terms。
Hardware--hardwareHardwareKey(または Key)、Data。
Domain--domainName、Role。
Usage--usageType、CanRunOnVirtualMachine(または CanRunInVirtualEnvironment)、ProcessList。
Beta--betaBuildType、RecentChanges、Description。

ハードウェアの識別

プロパティスイッチ説明
HardwareId--hardwareidハードウェアキーの算出元となるコンポーネントを指定する項目。
Salt--saltハードウェアキーのソルト。
ShowHardwareInfo--showhardwareinfoビルドを実行するコンピューターのハードウェア情報を表示します。

ツールと診断

プロパティスイッチ説明
License--licenseツール自体のライセンスファイルのパス、または検索するフォルダーのパスを指定する項目。
LicDirectory実行する lic.exe があるフォルダー。たとえば、展開した Babel zip パッケージのルート。
Register--register読み込む拡張アセンブリを指定する項目。
ShowLogo--[no]logoバナーを表示するかどうか。
VerboseLevel--verboseコンソールの詳細レベル。
NoConfiguration--noconfigツールの既定の構成を読み込みません。
ProvideCommandLineArgstrue を指定すると、生成されたコマンドラインが CommandLineArgs 出力項目で参照できるようになります。

プロジェクトファイル

.lcproj ファイルは通常の MSBuild プロジェクトで、Lic タスクを登録し、1 回のライセンス生成の設定を使って MakeLicense ターゲットからタスクを呼び出します。lic --makeproject は、現在のコマンドラインのスイッチからこのファイルを書き出します。名前を指定しない場合は出力ファイルと同じ場所に書き出され、ライセンスも通常どおり生成されます。lic --project は、このファイルを読み込み、追加のスイッチがあればその上に適用して実行します。このとき MSBuild は呼び出されません。タスクが登録されているコンピューターでは、msbuild または dotnet build でこのファイルをビルドすることもできます。

lic MyApp.dll --keyfile keys.pem --sign --licensee name=Contoso --expiredate 365 --output MyApp.licenses --makeproject MyApp.lcproj lic --project MyApp.lcproj --licensee name="Fabrikam" --output Fabrikam.licenses

プロジェクトファイルは、ライセンスがどのように作成されたかを再現可能な形で記録します。顧客ごとのライセンス生成が 1 つのファイルにまとまるため、バージョン管理、レビュー、再実行ができます。

Last updated on