方法 : コマンド プロンプトでコンパイルする

更新 : 2008 年 7 月

.NET Compact Framework アプリケーションをコマンド プロンプトでコンパイルするには、いくつかの方法があります。たとえば、次のような方法があります。

  • Microsoft Build Engine (MSBuild) を使用する。

  • バッチ ファイルを使用する。

いずれの方法でも、Windows Software Development Kit (SDK) に用意されている Visual C# コンパイラと Visual Basic コンパイラを使用します。ただし、MSBuild を使用する場合、現在は Visual Studio にのみ付属する .targets ファイルが必要です。

MSBuild を使ったコンパイル

MSBuild を使ったコマンド プロンプトからのビルド

  1. MSBuild.exe がシステム パスにあることを確認します。

    MSBuild.exe は %systemroot%\Microsoft.NET\Framework\version にあります。システム パス変数には、このパスを含める必要があります。

  2. コマンド プロンプトで、.NET Compact Framework アプリケーションのプロジェクト ファイルがあるディレクトリに移動します。プロジェクト ファイルの拡張子は、.sln、.vbproj、または .csproj です。

  3. 次のコマンドを入力します。

    msbuild.exe projectname
    

    コマンド プロンプト ウィンドウにビルド プロセスに関する情報が表示されます。

バッチ ファイルを使ったコンパイル

バッチ ファイルを使用すると、.NET Framework (デスクトップ) アセンブリの代わりに .NET Compact Framework アセンブリをコンパイル対象にできます。バッチ ファイルは、直接使用できるだけでなく、.NET Compact Framework をエンタープライズ ビルド システムに統合できるように、メイクファイル ユーティリティから呼び出すこともできます。

バッチ ファイルに含まれている情報は次のとおりです。

  • .NET Compact Framework アセンブリの位置に対するパス変数。この後の例では NETCF_PATH を使用します。

    ms172492.alert_note(ja-jp,VS.90).gifメモ :

    代わりに、このパスをメイク ファイルで指定するか、または [マイ コンピュータ] の [プロパティ] ダイアログ ボックスを使用して環境変数で指定できます。

  • アセンブリへの参照 (必要な場合)。-r スイッチを使用してアセンブリを変数に結合します。

  • コンパイラ コマンドと、このトピックの「コンパイラのスイッチ」に説明されている適切なスイッチと引数。この引数には、変数の参照と追加の引数を組み込むアスタリスク (*) が含まれます。

コンパイル用のバッチ ファイルを作成するには

  1. テキスト エディタで新規ファイルを作成し、使用するプログラミング言語のサンプル バッチ ファイルの内容を追加します。使用例を以下に示します。

  2. 必要に応じて、NETCF_PATH 変数を調整します。

    既定では、.NET Compact Framework アセンブリは C:\Program Files\Microsoft.NET\SDK\バージョン番号\CompactFramework\WindowsCE フォルダにあります。

    ms172492.alert_note(ja-jp,VS.90).gifメモ :

    Visual Studio 2008 に付属する .NET Compact Framework を使用している場合、アセンブリは C:\Program Files\Visual Studio のバージョン番号\SmartDevices\SDK\CompactFramework\バージョン番号\WindowsCE にあります。

  3. ファイルを保存し、名前を付けます。たとえば Visual Basic の場合は vbcc.bat、C# バッチ ファイルの場合は cscc.bat とします。

バッチ ファイルを使用してアプリケーションをコンパイルするには

  1. システム パスに .NET Framework が含まれていることを確認します。

    Visual Basic コンパイラ (vbc.exe) と Visual C# コンパイラ (csc.exe) は、%systemroot%\Microsoft.NET\Framework\version フォルダにあります。システム パス変数には、このパスを含める必要があります。

  2. コマンド プロンプトで、バッチ ファイル名とソース ファイル名を次のように入力します。

    vbcc myapp.vb
    

    ソース ファイル名には、使用するコンパイラに応じて拡張子 .cs または .vb を付ける必要があります。

現在のディレクトリに、デバイスまたはエミュレータにコピーできる実行可能ファイルがビルドされます。

C# コンパイル用のバッチ ファイル

以下は、C# コンパイル用のサンプル バッチ ファイルを示しています。

@echo off

if "%NETCF_PATH%" == "" (
  set NETCF_PATH=c:\Program Files\Microsoft.NET\SDK\v3.5\CompactFramework\WindowsCE)

if DEFINED REF ( set REF= )

set REF=%REF% "/r:%NETCF_PATH%\MsCorlib.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Data.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Drawing.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Messaging.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Net.IrDA.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Web.Services.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Xml.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.ServiceModel.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Xml.Xlinq.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Data.Entity.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Runtime.Serialization.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsMobile.DirectX.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.ServiceModel.Channels.Mail.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.ServiceModel.Channels.Mail.WindowsMobile.dll"

csc -nostdlib -noconfig %REF% %*

Visual Basic コンパイル用のバッチ ファイル

以下は、Visual Basic コンパイル用のサンプル バッチ ファイルを示しています。

@echo off

rem Verify the path is correct.
if "%NETCF_PATH%" == "" (
  set NETCF_PATH=c:\Program Files\Microsoft.NET\SDK\v3.5\CompactFramework\WindowsCE)
set SDK_PATH="%NETCF_PATH%"

if DEFINED REF ( set REF= )

set REF=%REF% "/r:%NETCF_PATH%\System.Data.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Drawing.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Messaging.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Net.IrDA.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Web.Services.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.DataGrid.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Windows.Forms.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsCE.Forms.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Xml.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.VisualBasic.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.ServiceModel.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Xml.Xlinq.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Data.Entity.dll"
set REF=%REF% "/r:%NETCF_PATH%\System.Runtime.Serialization.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.WindowsMobile.DirectX.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.ServiceModel.Channels.Mail.dll"
set REF=%REF% "/r:%NETCF_PATH%\Microsoft.ServiceModel.Channels.Mail.WindowsMobile.dll"

set IMP= /Imports:Microsoft.VisualBasic,System,System.Data,System.Drawing,System.Windows.Forms

vbc -sdkpath:%SDK_PATH% -netcf -noconfig -nostdlib %IMP% %REF% %*

コンパイラのスイッチ

コンパイラのスイッチと引数を次の表に示します。

スイッチ

説明

-r

必要に応じてアセンブリを参照します。

REF などの環境変数を設定することで、アセンブリを指定できます。既定では、ほとんどの .NET Compact Framework アセンブリが参照されます。

C# では、Mscorlib.dll への明示的な参照が必要です。また Visual Basic では、-sdkpath スイッチを使用して特定します。

-imports

Visual Basic では、次の名前空間を明示的にインポートする必要があります。

  • Microsoft.VisualBasic

  • System.System.Data

  • System.Drawing

  • System.Windows.Forms

-nostdlb

Visual C# コンパイラに対して、.NET Framework (デスクトップ) のアセンブリを無視するように命令します。Visual Basic コンパイラの場合は、コンパイラが Vbc.rsp ファイルを読み取れなくなります。

-netcf

Visual Basic コンパイラに対して、.NET Framework (デスクトップ) のアセンブリを無視するように命令します。

-noconfig

必ず指定します。

-sdkpath

Visual Basic では、Mscorlib.dll を特定するために必ず指定します。

参照

その他の技術情報

.NET Compact Framework でのアプリケーションとコア タスクの構築

変更履歴

日付

履歴

理由

2008 年 7 月

Visual Studio をインストールすることにより .targets ファイルを取得する必要があるという情報を記載。

コンテンツ バグ修正