作成日: 2012/03/16 最終更新日: 2024/08/16
文書種別
使用方法
詳細
プロジェクトのビルド時に「"LC.exe" はコード -1 を伴って終了しました。("LC.exe" exited with code -1)」というエラーが発生する場合、いくつかの原因が考えられます。以下の内容をご確認のうえ、プロジェクトまたはソリューションを「リビルド」してください。
1. licenses.licxの内容が不正
プロジェクトのlicenses.licxファイルが、下記のように不正な内容のとき、本エラーが発生する場合があります。
「ASP.NET Webサイト」形式のプロジェクトの場合、修正後のlicenses.licxファイルを元に、App_Licenses.dllファイルを再作成してください。
2. binフォルダ、objフォルダに古い情報が残っている
プロジェクトフォルダ下の「bin」および「obj」フォルダにある既存ファイルの影響により、ビルドするアプリケーションに正しくライセンスが組み込まれない場合があります。
ビルドの前に「bin」および「obj」フォルダを削除してください。
3. 「対象のフレームワーク」設定が不正
プロジェクトの「対象のフレームワーク」が適切に設定されていないとき、本エラーが発生する場合があります。
たとえば、.NET Framework 4.8に対応していない製品を使用したプロジェクトで、「対象のフレームワーク」が「.NET Framework 4.8」に設定されている場合、本エラーが発生します。
「対象のフレームワーク」の設定を確認してください。本設定の詳細については、MSDNライブラリを参照してください。
方法: .NET Framework のバージョンをターゲットにする
4. アセンブリのDLLファイルにアクセスブロックの設定がされている
プロジェクト内で参照しているアセンブリのDLLファイルに、WindowsのZone IDによるアクセスブロック設定がされている場合、本エラーが発生します。
DLLファイルのプロパティ画面上に表示されるメッセージ:「セキュリティ: このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」
通常の開発環境において、製品のインストーラによってインストールされたDLLファイルにこの設定がされることはありませんが、たとえば以下のような方法でDLLファイルを入れ替えた場合に設定される可能性があります。
5. 64ビット版のLC.exeが使用されている
LC.exeは32ビット版と64ビット版の2種類が存在します。弊社.NET製品のほとんどはアセンブリDLLが32ビット環境用と64ビット環境用とで共通になっていますが、この場合は32ビット版のLC.exeを使用する必要があります。64ビット版のLC.exeでプロジェクトをビルドすると、本エラーが発生します。
64ビット版のLC.exeが使用されるいくつかのケースについて、以下に説明します。
(1) 64ビット版OSで.NET Framework 4.5をインストールしている
以下の条件がすべて揃っている場合、64ビット版のLC.exeが使用されます。
本現象は、マイクロソフト社のサポート技術情報で公開されている、以下の問題に起因しています。
.NET Framework 4.5 のインストールにより Visual Studio 2010 が起動するビルドツールが 64 bit 版に変化する場合がある
(2) 64ビット版OSでVisual Studio 2005を使用している
64ビット版(x64)OS上でVisual Studio 2005を使用している場合、マイクロソフト社のサポート技術情報で公開されている、以下の問題に該当する可能性があります。
ライセンス コンパイラ (Lc.exe) が例外をスローするときにします。ライセンス済みのコンポーネントは、64 ビットのオペレーティング システムを実行しているコンピューターで NET Framework 2.0 アプリケーションを使用します。
(1) Visual Studio 2005を「管理者として実行」で起動します。
(2) 起動したVisual Studio 2005からアプリケーションのプロジェクトを開きます。
(3) プロジェクトのプロパティ画面を表示し、「ビルドイベント」を下記の内容に設定します(Visual Basicの場合、[コンパイル]タブから[ビルド イベント]ボタンをクリック。C#の場合、[ビルド イベント]タブをクリック)。
・ビルド前に実行するコマンドライン:
%SYSTEMROOT%¥Microsoft.NET¥Framework64¥v2.0.50727¥ldr64.exe setwow
・ビルド後に実行するコマンドライン:
%SYSTEMROOT%¥Microsoft.NET¥Framework64¥v2.0.50727¥ldr64.exe set64
・ビルド後のコマンドラインの実行条件:
ビルドが成功したとき
(3) コマンドラインからプロジェクトをビルドしている
Visual Studio上からではなく、バッチ処理などでコマンドラインからプロジェクトをビルドしている場合は、32ビット版のMSBuild.exeを実行してください。64ビット版のMSBuild.exeを実行した場合、64ビット版のLC.exeが使用されます。
なお、.NET Framework 4.0の場合、MSBuild.exeは以下のフォルダにあります。
32ビット版:%SYSTEMROOT%¥Microsoft.NET¥Framework¥v4.0.30319¥MSBuild.exe
64ビット版:%SYSTEMROOT%¥Microsoft.NET¥Framework64¥v4.0.30319¥MSBuild.exe
(4) TFSで「MSBuild プラットフォーム」を「X86」以外に設定している
TFS(Team Foundation Server)からプロジェクトをビルドしている場合、設定によっては64ビット版のLC.exeが使用されます。
[詳細設定]のビルドプロセスパラメーターの設定で、[MSBuild プラットフォーム]が「Auto」または「X64」に設定されている場合は、「X86」に変更してください。本設定の詳細については、MSDNライブラリを参照してください。
アップグレード テンプレートを使用してビルドを定義する
1. licenses.licxの内容が不正
2. binフォルダ、objフォルダに古い情報が残っている
3. 「対象のフレームワーク」設定が不正
4. アセンブリのDLLファイルにアクセスブロックの設定がされている
5. 64ビット版のLC.exeが使用されている
2. binフォルダ、objフォルダに古い情報が残っている
3. 「対象のフレームワーク」設定が不正
4. アセンブリのDLLファイルにアクセスブロックの設定がされている
5. 64ビット版のLC.exeが使用されている
注意事項
- 弊社製品を使用したプロジェクトをビルドするには、その環境に該当製品の開発ライセンスが必要です。具体的には、製品のインストールとライセンス認証が行われている必要があります。
ライセンス認証が行われていない(ライセンスが無効になっている)場合や、トライアル版ライセンスの試用期限が終了している場合は、ビルドするアプリケーションにライセンスを組み込むことができないため、後述の内容にかかわらず本エラーが発生します。 - 「デバッグ実行」や「ビルド」では、アプリケーションにライセンスが組み込まれない場合があります。必ず「リビルド」を実行してください。
- 「LC.exe」は.NET Framework SDKに収録されているライセンスコンパイラです。.NET Frameworkアプリケーションのプロジェクトにおいて、ビルドするアプリケーションにライセンスを組み込むために使用します。
1. licenses.licxの内容が不正
プロジェクトのlicenses.licxファイルが、下記のように不正な内容のとき、本エラーが発生する場合があります。
- プロジェクト内で使用していないコントロールのライセンス情報が記載されている
- ライセンス情報の記載内容(名前空間やコントロール名、バージョン番号など)に誤りがある
※ 旧バージョンからの移行時や、サービスパックの適用時には、licenses.licxファイルの修正が必要になる場合があります。
「ASP.NET Webサイト」形式のプロジェクトの場合、修正後のlicenses.licxファイルを元に、App_Licenses.dllファイルを再作成してください。
注意事項
- licenses.licxは.NET Frameworkアプリケーションにライセンスを組み込むために必要なファイルです。.NET Frameworkアプリケーションのプロジェクトからは削除しないでください。
- .NET Frameworkアプリケーションではなく、.NETアプリケーションのプロジェクトでは、licenses.licxファイルは使用しません。.NETアプリケーションのプロジェクトにlicenses.licxファイルが含まれている場合、ビルド時に本エラーが発生します。licenses.licxファイルを「プロジェクトから除外」してください。
- licenses.licxの使用方法(記載内容や配置場所など)については、「licenses.licxを使用したライセンスの組み込み(トライアル版やライセンスに関するエラーが出力された場合の対処方法)」をご覧ください。
2. binフォルダ、objフォルダに古い情報が残っている
プロジェクトフォルダ下の「bin」および「obj」フォルダにある既存ファイルの影響により、ビルドするアプリケーションに正しくライセンスが組み込まれない場合があります。
ビルドの前に「bin」および「obj」フォルダを削除してください。
3. 「対象のフレームワーク」設定が不正
プロジェクトの「対象のフレームワーク」が適切に設定されていないとき、本エラーが発生する場合があります。
たとえば、.NET Framework 4.8に対応していない製品を使用したプロジェクトで、「対象のフレームワーク」が「.NET Framework 4.8」に設定されている場合、本エラーが発生します。
「対象のフレームワーク」の設定を確認してください。本設定の詳細については、MSDNライブラリを参照してください。
方法: .NET Framework のバージョンをターゲットにする
http://msdn.microsoft.com/ja-jp/library/bb398202.aspx
各製品が対応するフレームワークについては、製品に付属のリリースノートから「必要システム」を参照してください。リリースノートのHTMLファイルは製品をインストールしたフォルダ内にあり、スタートメニューなどからも表示できます。4. アセンブリのDLLファイルにアクセスブロックの設定がされている
プロジェクト内で参照しているアセンブリのDLLファイルに、WindowsのZone IDによるアクセスブロック設定がされている場合、本エラーが発生します。
DLLファイルのプロパティ画面上に表示されるメッセージ:「セキュリティ: このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」
通常の開発環境において、製品のインストーラによってインストールされたDLLファイルにこの設定がされることはありませんが、たとえば以下のような方法でDLLファイルを入れ替えた場合に設定される可能性があります。
- メール添付やWebサイト経由で提供されたDLLファイル(HotFix版など)を使用している
- 別のマシン(ファイルサーバーなど)からコピーしたDLLファイルを使用している
5. 64ビット版のLC.exeが使用されている
LC.exeは32ビット版と64ビット版の2種類が存在します。弊社.NET製品のほとんどはアセンブリDLLが32ビット環境用と64ビット環境用とで共通になっていますが、この場合は32ビット版のLC.exeを使用する必要があります。64ビット版のLC.exeでプロジェクトをビルドすると、本エラーが発生します。
64ビット版のLC.exeが使用されるいくつかのケースについて、以下に説明します。
(1) 64ビット版OSで.NET Framework 4.5をインストールしている
以下の条件がすべて揃っている場合、64ビット版のLC.exeが使用されます。
- 開発環境のOSが64ビット版(x64)である
- 開発環境に.NET Framework 4.5がインストールされている
- Visual Studio 2010または2012を使用している
- ビルドのプラットフォームターゲットに「x64」を設定している
本現象は、マイクロソフト社のサポート技術情報で公開されている、以下の問題に起因しています。
.NET Framework 4.5 のインストールにより Visual Studio 2010 が起動するビルドツールが 64 bit 版に変化する場合がある
http://support.microsoft.com/kb/2783939/ja
本現象を回避するには、上記ページの「解決方法」に記載されているように、環境変数またはプロジェクトファイル (.vbprojまたは.csproj) において、「DisableOutOfProcTaskHost」の値に「1」に設定してください。(2) 64ビット版OSでVisual Studio 2005を使用している
64ビット版(x64)OS上でVisual Studio 2005を使用している場合、マイクロソフト社のサポート技術情報で公開されている、以下の問題に該当する可能性があります。
ライセンス コンパイラ (Lc.exe) が例外をスローするときにします。ライセンス済みのコンポーネントは、64 ビットのオペレーティング システムを実行しているコンピューターで NET Framework 2.0 アプリケーションを使用します。
http://support.microsoft.com/kb/913961/ja
この場合は上記ページの「解決方法」で回避できます。具体的な手順は以下のとおりです。(1) Visual Studio 2005を「管理者として実行」で起動します。
(2) 起動したVisual Studio 2005からアプリケーションのプロジェクトを開きます。
(3) プロジェクトのプロパティ画面を表示し、「ビルドイベント」を下記の内容に設定します(Visual Basicの場合、[コンパイル]タブから[ビルド イベント]ボタンをクリック。C#の場合、[ビルド イベント]タブをクリック)。
・ビルド前に実行するコマンドライン:
%SYSTEMROOT%¥Microsoft.NET¥Framework64¥v2.0.50727¥ldr64.exe setwow
・ビルド後に実行するコマンドライン:
%SYSTEMROOT%¥Microsoft.NET¥Framework64¥v2.0.50727¥ldr64.exe set64
・ビルド後のコマンドラインの実行条件:
ビルドが成功したとき
(3) コマンドラインからプロジェクトをビルドしている
Visual Studio上からではなく、バッチ処理などでコマンドラインからプロジェクトをビルドしている場合は、32ビット版のMSBuild.exeを実行してください。64ビット版のMSBuild.exeを実行した場合、64ビット版のLC.exeが使用されます。
なお、.NET Framework 4.0の場合、MSBuild.exeは以下のフォルダにあります。
32ビット版:%SYSTEMROOT%¥Microsoft.NET¥Framework¥v4.0.30319¥MSBuild.exe
64ビット版:%SYSTEMROOT%¥Microsoft.NET¥Framework64¥v4.0.30319¥MSBuild.exe
(4) TFSで「MSBuild プラットフォーム」を「X86」以外に設定している
TFS(Team Foundation Server)からプロジェクトをビルドしている場合、設定によっては64ビット版のLC.exeが使用されます。
[詳細設定]のビルドプロセスパラメーターの設定で、[MSBuild プラットフォーム]が「Auto」または「X64」に設定されている場合は、「X86」に変更してください。本設定の詳細については、MSDNライブラリを参照してください。
アップグレード テンプレートを使用してビルドを定義する
関連情報
旧文書番号
32146