作成日: 2014/03/07 最終更新日: 2024/08/16
文書種別
技術情報
詳細
本文書では、弊社の.NET製品を使用して開発した.NET Frameworkアプリケーションに対し、licenses.licxを使用してライセンスを組み込む方法について、全般的な情報を解説します。
1. ライセンスを組み込むための条件
アプリケーションに.NET製品のライセンスを組み込むための条件は、以下の2つです。
これ以降は、条件1.が満たされていることを前提として、主に条件2.について説明します。
2. licenses.licxファイルとは
3. licenses.licxの自動作成
Visual Studio上で以下の操作を行うと、.NET Frameworkのライセンス処理機能により、自動的にlicenses.licxが作成され、そのコンポーネントの情報が記載されます。プロジェクト内にすでにlicenses.licxが存在する場合は、そのコンポーネントの情報が追記されます。
4. licenses.licxの記載内容
実際の記載例
以下は、InputMan for Windows Forms 7.0Jの「GcTextBox」と「GcMask」を使用する場合の記載例です。
なお、ツールボックスからコンポーネントを貼り付けると、licenses.licxの自動作成が行われますが、その場合は以下のように「Version」「Culture」「PublicKeyToken」に関する情報も記載されます。
反対に、「, Version=」以降の文字列を記載した場合、プロジェクト内で使用しているアセンブリのバージョンとlicenses.licxに記載されているバージョン情報が異なるときには、ビルドやライセンスの組み込みに失敗します。そのため、サービスパックの適用時や、旧バージョンからの移行時には、移行ツールを使用するなどの方法で、licenses.licxの記載内容を更新する必要があります。
5. licenses.licxの配置場所
licenses.licxは、以下のいずれかのフォルダに配置します。
注意事項
.NET製品を使用したプロジェクトを、別のプロジェクトから使用する場合
.NET製品を使用して作成したプロジェクト(クラスライブラリやユーザーコントロールなど)を、別のプロジェクトで使用したり、リフレクションによって動的に呼び出したりする場合、呼び出し元となるアプリケーションのプロジェクトにlicenses.licxが必要です。
以下のイメージ図では、クラスライブラリのプロジェクト「MyLib.dll.vbproj」で.NET製品を使用し、そのクラスライブラリをWindowsフォームアプリケーションのプロジェクト「MyApp.exe.vbproj」から参照して呼び出していますが、この場合「MyApp.exe.vbproj」にlicenses.licxが必要です。クラスライブラリにlicenses.licxがあっても、それを呼び出すアプリケーションにライセンスは組み込まれません。
この場合、以下の点に注意してください。
(1) 最初に実行されるプロジェクトにlicenses.licxが必要
licenses.licxは最初に実行されるアプリケーションのプロジェクト(スタートアッププロジェクト)に必要です。上記の例で、「MyApp.exe.vbproj」をさらに別のプロジェクトから参照して呼び出す場合には、そのプロジェクトにlicenses.licxが必要になります。
(2) licenses.licxは自動で作成されない
.NET製品を使用したプロジェクトやアセンブリDLLを参照設定に追加しても、呼び出し元のプロジェクトにlicenses.licxは作成されないため、手動でlicenses.licxを作成するか、コピーしてプロジェクトに含める必要があります。詳細については「7. licenses.licxを手動で作成する」をご覧ください。
(3) ビルド環境には開発ライセンスが必要
呼び出し元のアプリケーションは別のプロジェクトやアセンブリDLLを介して.NET製品を使用しているため、このアプリケーションのプロジェクトをビルドする環境には、.NET製品の開発ライセンスが必要です。具体的には、「1. ライセンスを組み込むための条件」の条件1.(開発環境に対する条件)が満たされている必要があります。
6. licenses.licxのプロパティ
licenses.licxのプロパティ設定は以下のとおりです。
通常はデフォルトのままで特に変更する必要はありませんが、「ビルド アクション」プロパティを「埋め込まれたリソース」に設定する点に注意してください。
7. licenses.licxを手動で作成する
コンポーネントのアセンブリを参照設定に追加して使用するときなど、licenses.licxの自動作成が行われない場合は、手動で作成する必要があります。
licenses.licxの作成手順
licenses.licxの自動作成動作を利用する方法
licenses.licxの自動作成が行われることを利用して、以下のような手順でも作成できます。
licenses.licxファイルをコピーする場合の注意点
licenses.licxは単純なテキストファイルですので、製品のサンプルプロジェクトなどに含まれているlicenses.licxファイルをコピーしても、手動で作成する場合と同様の結果が得られます。ただし、以下の点で注意が必要です。
(1) licenses.licxをプロジェクトに含める
Windowsエクスプローラなどを使用して、licenses.licxファイルをプロジェクト内のフォルダへコピーしても、それだけではプロジェクトに追加されません。ソリューションエクスプローラ上でlicenses.licxを右クリックし、[プロジェクトに含める]を選択してください。
(2) licenses.licxの記載内容を確認する
別プロジェクトのlicenses.licxファイルをコピーした場合、必要な情報が記載されていなかったり、不要な情報が記載されていたりする可能性があります。licenses.licxの記載内容を確認してください。
(3) licenses.licxのプロパティを確認する
licenses.licxのプロパティが適切に設定されていることを確認してください。特に、「ビルド アクション」プロパティは「埋め込まれたリソース」に設定する必要があります。
8. App_Licenses.dllを作成する(ASP.NET Webサイトのみ)
ASP.NETの「Webサイト」で.NET製品を使用する場合、App_Licenses.dll(ランタイムライセンスファイル)をlicenses.licxから作成し、ビルドしたWebサイトと共に運用環境へ配布する必要があります。
App_Licenses.dllとは
App_Licenses.dllの作成手順
1. ライセンスを組み込むための条件
2. licenses.licxファイルとは
3. licenses.licxの自動作成
4. licenses.licxの記載内容
5. licenses.licxの配置場所
6. licenses.licxのプロパティ
7. licenses.licxを手動で作成する
8. App_Licenses.dllを作成する(ASP.NET Webサイトのみ)
2. licenses.licxファイルとは
3. licenses.licxの自動作成
4. licenses.licxの記載内容
5. licenses.licxの配置場所
6. licenses.licxのプロパティ
7. licenses.licxを手動で作成する
8. App_Licenses.dllを作成する(ASP.NET Webサイトのみ)
メモ
- アプリケーションに正しくライセンスが組み込まれていない場合、実行時にトライアル版のダイアログが出力されたり、ライセンスに関するダイアログが出力されたりします。本文書の内容をご確認ください。
注意事項
- .NET Frameworkアプリケーションではなく、.NETアプリケーションのプロジェクトでは、licenses.licxファイルは使用しないため、本文書の内容は該当しません。
- Silverlight用コンポーネント製品はlicenses.licxを使用しないため、本文書の内容は該当しません。ライセンスの組み込み方法については、製品に付属の製品ヘルプをご覧ください。製品ヘルプは、スタートメニューなどから表示できます。
1. ライセンスを組み込むための条件
アプリケーションに.NET製品のライセンスを組み込むための条件は、以下の2つです。
- 開発環境に対する条件
ビルドする環境に.NET製品の開発ライセンスが存在する(製品のインストールとライセンス認証が適切に行われている)。 - プロジェクトに対する条件
ビルドするプロジェクトの適切な位置にlicenses.licxファイルが存在し、適切な情報が記載されている。
これ以降は、条件1.が満たされていることを前提として、主に条件2.について説明します。
メモ
- たとえば、新規プロジェクトのフォームにコンポーネントを貼り付けただけのアプリケーションでも、トライアル版やライセンスに関するダイアログが出力されてしまう場合は、条件1.が満たされていないと判断できます。この場合は、ライセンス認証手続きや製品のインストールをやり直すことで、開発環境を正常な状態にできる可能性があります。
注意事項
- サブスクリプション製品の「ComponentOne Studio」はライセンス認証の手順が異なります。本製品のライセンス認証手順については「購入後の手続きからインストール」ページの「ライセンス認証を行う」をご覧ください。
- 「デバッグ実行」や「ビルド」では、アプリケーションにライセンスが組み込まれない場合があります。必ず「リビルド」を実行してください。
もしくは、既存のbinフォルダやobjフォルダを削除したうえで、「リビルド」を実行してください。
2. licenses.licxファイルとは
- licenses.licxは、.NET Framework標準のライセンス処理機能(LicenseProvider)で使用されるファイルです。ライセンス付きコンポーネントを使用した開発において、ビルドするアプリケーションにライセンスを組み込むために必要です。
- licenses.licxはテキスト形式のファイルです。Visual Studio上でも編集が可能です。
- licenses.licxをアプリケーションの運用環境に配布する必要はありません。
3. licenses.licxの自動作成
Visual Studio上で以下の操作を行うと、.NET Frameworkのライセンス処理機能により、自動的にlicenses.licxが作成され、そのコンポーネントの情報が記載されます。プロジェクト内にすでにlicenses.licxが存在する場合は、そのコンポーネントの情報が追記されます。
- ツールボックスからフォームに、ライセンス付きコンポーネントを貼り付ける
- ライセンス付きコンポーネントが配置されたフォームを、デザイン画面で開く
注意事項
- Visual Studioのツールボックスからコンポーネントを貼り付けるには、製品のインストール後に、手動でツールボックスへの登録を行う必要があります。登録の手順については、使用されている.NET製品の製品ヘルプをご覧ください。製品ヘルプは、スタートメニューなどから表示できます。
- ライセンス付きコンポーネントのアセンブリを参照設定に追加し、コード上でインスタンスを生成して使用する場合は、licenses.licxの自動作成や自動追記は行われません。そのため、licenses.licxを手動で作成する必要があります。
- Visual Studio 2012/2013のVisual BasicでWPFアプリケーションを開発する場合は、自動作成されたlicenses.licxがプロジェクトから除外されていることがあります。この事象はVisual Studioの問題により発生しています。
licenses.licx is not updated for WPF control with DefaultInitializer uncer VS2012
https://connect.microsoft.com/VisualStudio/feedback/details/773284/
licenses.licx is not created/updated for WPF projects under VS2012
https://connect.microsoft.com/VisualStudio/feedback/details/771595/
licenses.licxが除外されている場合には、手動でプロジェクトに含めてください。 - ライセンス付きコンポーネントをフォームや参照設定から削除しても、licenses.licxや記載された情報は削除されません。これらが不要な場合は、手動で削除する必要があります。
4. licenses.licxの記載内容
- licenses.licxには、プロジェクト内で使用(参照)しているライセンス付きコンポーネントの情報を記載します。
- 数種類のライセンス付きコンポーネントを使用している場合は、それぞれの情報を記載します。記載する情報は、1コンポーネントに対し1行分です。
※ 依存するライセンス付きコンポーネントがある場合は、その分の情報も必要です。 - 1種類のライセンス付きコンポーネントを複数個使用している場合でも、記載する情報は1行分です。同じ情報を複数行記載する必要はありません。
実際の記載例
以下は、InputMan for Windows Forms 7.0Jの「GcTextBox」と「GcMask」を使用する場合の記載例です。
GrapeCity.Win.Editors.GcTextBox, GrapeCity.Win.Editors.v70「名前空間.クラス名」と「アセンブリ名」を、カンマ区切りで記載します。
GrapeCity.Win.Editors.GcMask, GrapeCity.Win.Editors.v70
なお、ツールボックスからコンポーネントを貼り付けると、licenses.licxの自動作成が行われますが、その場合は以下のように「Version」「Culture」「PublicKeyToken」に関する情報も記載されます。
GrapeCity.Win.Editors.GcTextBox, GrapeCity.Win.Editors.v70, Version=7.0.yyyy.mmdd, Culture=neutral, PublicKeyToken=0ce01a33ce55ca12上記における「, Version=」以降の文字列は、ビルド時のバージョンチェックなどを厳密に行うための情報ですので、必須ではありません。これらの文字列が記載されていなくも、アプリケーションにライセンスは正しく組み込まれます。
GrapeCity.Win.Editors.GcMask, GrapeCity.Win.Editors.v70, Version=7.0.yyyy.mmdd, Culture=neutral, PublicKeyToken=0ce01a33ce55ca12
反対に、「, Version=」以降の文字列を記載した場合、プロジェクト内で使用しているアセンブリのバージョンとlicenses.licxに記載されているバージョン情報が異なるときには、ビルドやライセンスの組み込みに失敗します。そのため、サービスパックの適用時や、旧バージョンからの移行時には、移行ツールを使用するなどの方法で、licenses.licxの記載内容を更新する必要があります。
注意事項
- プロジェクト内で使用していないコンポーネントの情報がlicenses.licxに記載されている場合、ビルド時に「"LC.exe" はコード -1 を伴って終了しました」エラーが発生します。使用していないコンポーネントの情報を、licenses.licxから行ごと削除してください。
5. licenses.licxの配置場所
licenses.licxは、以下のいずれかのフォルダに配置します。
- (Visual Basicの場合)プロジェクトフォルダ下の「My Project」フォルダ
- (C#の場合)プロジェクトフォルダ下の「Properties」フォルダ
- プロジェクトのルートフォルダ
メモ
- ソリューションエクスプローラ上でlicenses.licxを表示するには、「すべてのファイルを表示」をオンにしてください。
注意事項
- licenses.licxが存在しても、プロジェクトから除外されている場合は、ビルドするアプリケーションにライセンスが組み込まれません。ソリューションエクスプローラ上でlicenses.licxを右クリックし、[プロジェクトに含める]を選択してください。
- プロジェクト内に複数のlicenses.licxが存在する場合は、ビルドするアプリケーションに正しくライセンスが組み込まれない可能性があります。記載内容を1つのlicenses.licxにまとめ、それ以外のlicenses.licxはプロジェクトから削除してください。
.NET製品を使用したプロジェクトを、別のプロジェクトから使用する場合
.NET製品を使用して作成したプロジェクト(クラスライブラリやユーザーコントロールなど)を、別のプロジェクトで使用したり、リフレクションによって動的に呼び出したりする場合、呼び出し元となるアプリケーションのプロジェクトにlicenses.licxが必要です。
以下のイメージ図では、クラスライブラリのプロジェクト「MyLib.dll.vbproj」で.NET製品を使用し、そのクラスライブラリをWindowsフォームアプリケーションのプロジェクト「MyApp.exe.vbproj」から参照して呼び出していますが、この場合「MyApp.exe.vbproj」にlicenses.licxが必要です。クラスライブラリにlicenses.licxがあっても、それを呼び出すアプリケーションにライセンスは組み込まれません。
この場合、以下の点に注意してください。
(1) 最初に実行されるプロジェクトにlicenses.licxが必要
licenses.licxは最初に実行されるアプリケーションのプロジェクト(スタートアッププロジェクト)に必要です。上記の例で、「MyApp.exe.vbproj」をさらに別のプロジェクトから参照して呼び出す場合には、そのプロジェクトにlicenses.licxが必要になります。
(2) licenses.licxは自動で作成されない
.NET製品を使用したプロジェクトやアセンブリDLLを参照設定に追加しても、呼び出し元のプロジェクトにlicenses.licxは作成されないため、手動でlicenses.licxを作成するか、コピーしてプロジェクトに含める必要があります。詳細については「7. licenses.licxを手動で作成する」をご覧ください。
(3) ビルド環境には開発ライセンスが必要
呼び出し元のアプリケーションは別のプロジェクトやアセンブリDLLを介して.NET製品を使用しているため、このアプリケーションのプロジェクトをビルドする環境には、.NET製品の開発ライセンスが必要です。具体的には、「1. ライセンスを組み込むための条件」の条件1.(開発環境に対する条件)が満たされている必要があります。
メモ
以下のような独自のコントロールを作成する場合は、LicenseProvider属性を設定することで、独自コントロールの使用時にもlicenses.licxの自動作成が行われるようにすることが可能です。
サンプルコード(VB.NET)
サンプルコード(C#)
以下のような独自のコントロールを作成する場合は、LicenseProvider属性を設定することで、独自コントロールの使用時にもlicenses.licxの自動作成が行われるようにすることが可能です。
- .NET製品のコントロールを継承したカスタムコントロール
- .NET製品のコントロールと他のコントロールを組み合わせたユーザーコントロール
サンプルコード(VB.NET)
Imports System.Windows.Forms Imports System.ComponentModel ' 継承コントロールの場合(InputMan for Windows Formsの「GcTextBox」を継承する例) <LicenseProviderAttribute(GetType(LicenseProvider))> _ Public Class MyControl Inherits GrapeCity.Win.Editors.GcTextBox ・・・ End Class ' ユーザーコントロールの場合 <LicenseProviderAttribute(GetType(LicenseProvider))> _ Public Class UserControl1 Inherits UserControl ・・・ End Class
サンプルコード(C#)
using System.Windows.Forms; using System.ComponentModel; // 継承コントロールの場合(InputMan for Windows Formsの「GcTextBox」を継承する例) [LicenseProviderAttribute(typeof(LicenseProvider))] public class MyControl : GrapeCity.Win.Editors.GcTextBox { ・・・ } // ユーザーコントロールの場合 [LicenseProviderAttribute(typeof(LicenseProvider))] public class UserControl1 : UserControl { ・・・ }ただし、独自コントロール側でlicenses.licxの自動作成が行われた結果、licenses.licxの記載内容が継承元のコントロールと重複して不正な状態となり、「"LC.exe" はコード -1 を伴って終了しました」エラーなどの問題が発生する場合があります。ビルド時にlicenses.licxの記載内容が適切であることを確認してください。
6. licenses.licxのプロパティ
licenses.licxのプロパティ設定は以下のとおりです。
通常はデフォルトのままで特に変更する必要はありませんが、「ビルド アクション」プロパティを「埋め込まれたリソース」に設定する点に注意してください。
プロパティ名 | 設定値 |
---|---|
ファイル名 | licenses.licx |
パス | 「5. licenses.licxの配置場所」のパス+ファイル名 |
カスタム ツール | (空欄) |
カスタム ツールの名前空間 | (空欄) |
ビルド アクション | 埋め込まれたリソース |
出力ディレクトリにコピー | コピーしない |
メモ
- プロパティ設定は、Visual Studioのソリューションエクスプローラ上でlicenses.licxを選択することにより、プロパティウィンドウ上で確認できます。
7. licenses.licxを手動で作成する
コンポーネントのアセンブリを参照設定に追加して使用するときなど、licenses.licxの自動作成が行われない場合は、手動で作成する必要があります。
licenses.licxの作成手順
- Visual Studioの[プロジェクト]メニューから、[新しい項目の追加]を選択します。
- テンプレートから[テキストファイル]を選択し、ファイルの名前を「licenses.licx」に設定して、[追加]ボタンをクリックします。プロジェクトのルートフォルダにlicenses.licxが追加されます。
- 追加されたlicenses.licxに、「4. licenses.licxの記載内容」の情報を記載します。
- licenses.licxのプロパティが適切に設定されていることを確認します。
licenses.licxの自動作成動作を利用する方法
licenses.licxの自動作成が行われることを利用して、以下のような手順でも作成できます。
- Visual Studioのツールボックスからフォームに、使用するコンポーネントを貼り付けます。
- 手順1.で貼り付けたコンポーネントをフォームから削除します。
- 作成されたlicenses.licxに、使用するコンポーネントの情報が記載されていることを確認します。記載内容の詳細については「4. licenses.licxの記載内容」をご覧ください。
- licenses.licxのプロパティが適切に設定されていることを確認します。
licenses.licxファイルをコピーする場合の注意点
licenses.licxは単純なテキストファイルですので、製品のサンプルプロジェクトなどに含まれているlicenses.licxファイルをコピーしても、手動で作成する場合と同様の結果が得られます。ただし、以下の点で注意が必要です。
(1) licenses.licxをプロジェクトに含める
Windowsエクスプローラなどを使用して、licenses.licxファイルをプロジェクト内のフォルダへコピーしても、それだけではプロジェクトに追加されません。ソリューションエクスプローラ上でlicenses.licxを右クリックし、[プロジェクトに含める]を選択してください。
(2) licenses.licxの記載内容を確認する
別プロジェクトのlicenses.licxファイルをコピーした場合、必要な情報が記載されていなかったり、不要な情報が記載されていたりする可能性があります。licenses.licxの記載内容を確認してください。
(3) licenses.licxのプロパティを確認する
licenses.licxのプロパティが適切に設定されていることを確認してください。特に、「ビルド アクション」プロパティは「埋め込まれたリソース」に設定する必要があります。
メモ
- licenses.licxファイルをどのフォルダへコピーすれば良いかについては、「5. licenses.licxの配置場所」をご覧ください。
8. App_Licenses.dllを作成する(ASP.NET Webサイトのみ)
ASP.NETの「Webサイト」で.NET製品を使用する場合、App_Licenses.dll(ランタイムライセンスファイル)をlicenses.licxから作成し、ビルドしたWebサイトと共に運用環境へ配布する必要があります。
App_Licenses.dllとは
- App_Licenses.dllは、ASP.NETの「Webサイト」のみで使用されるファイルです。
- ASP.NETのWebサイトでは、原則として実行時にWebサイトがコンパイルされるため、他のプロジェクトのように開発時にライセンスを組み込むことができません。そのため、ライセンスをApp_Licenses.dllへ組み込み、それを実行時にWebサイトから参照することで、ライセンス付きコンポーネントを利用する仕組みになっています。
注意事項
- ASP.NETの「Webサイト」以外のプロジェクト(「ASP.NET Webアプリケーション」など)では、App_Licenses.dllを使用しませんので、作成する必要はありません。
- .NET製品を参照設定に追加して使用する場合、licenses.licxの自動作成は行われませんので、App_Licenses.dllを作成する前に、licenses.licxを手動で作成する必要があります。
- 製品にサービスパックを適用したときや、別のライセンス付きコンポーネントをプロジェクトに追加したときなど、licenses.licxの記載内容が更新された場合は、更新後のlicenses.licxから再度App_Licenses.dllを作成し、運用環境へ配布する必要があります。
App_Licenses.dllの作成手順
- Visual Studioのソリューションエクスプローラー上で、licenses.licxの配置場所を確認してください。licenses.licxがルート以外の場所に配置されている場合には、ルートに移動させてください。
- ソリューションエクスプローラー上で、licenses.licxを右クリックします。
- コンテキストメニューから[ランタイム ライセンスの作成](Visual Studio 2005/2008の場合は[ランタイム ライセンスのビルド])を選択します。
※ licenses.licxがルート以外の場所に配置されていると、メニューに項目が表示されない場合があります。 - Binフォルダ内に、App_Licenses.dllが作成されます。
注意事項
- Visual Studio 2022の場合、上記の手順でApp_Licenses.dllを作成することができません。Visual Studio 2022を使用している場合の回避方法は、以下のナレッジをご参照ください。
Visual Studio 2022で「ランタイム ライセンスの作成」を実行すると「ライセンス ファイルをバイナリ リソースに変換できませんでした」エラーが発生する
関連情報
旧文書番号
37066