Поделиться через


Практическое руководство. Компиляция в командной строке

Обновлен: Июль 2008

Существует несколько способов компиляции приложения .NET Compact Framework в командной строке. В их числе:

  • Использование подсистемы Microsoft Build Engine (MSBuild);

  • Использование пакетных файлов.

В обоих методах используются компиляторы Visual C# и Visual Basic, входящие в состав пакета SDK (пакет средств разработки программного обеспечения) для Windows. Однако для MSBuild требуются файлы .targets, которые в настоящее время поставляются только в Visual Studio.

Компиляция с использованием MSBuild

Построение из командной строки с использованием MSBuild

  1. Убедитесь, что файл MSBuild.exe находится в каталоге, указанном в системном пути.

    Файл MSBuild.exe расположен в каталоге %systemroot%\Microsoft.NET\Framework\версия. Переменная системного пути должна включать этот путь.

  2. В командной строке перейдите в каталог, в котором находится файл проекта приложения .NET Compact Framework. Файл проекта должен иметь расширение SLN, VBPRPOJ или CSPROJ.

  3. Введите следующую команду:

    msbuild.exe projectname
    

    В окне командной строки предоставляются сведения о процессе построения.

Компиляция при помощи пакетных файлов

Пакетные файлы можно использовать для получения сборок .NET Compact Framework, а не полной платформы .NET Framework (для настольного компьютера). Пакетные файлы можно использовать напрямую или же вызывать их с помощью служебной программы построения для интеграции .NET Compact Framework в системы построения масштаба предприятия.

Пакетный файл содержит следующие сведения:

  • Переменная пути, задающая местонахождение сборок .NET Compact Framework. В следующем примере используется переменная NETCF_PATH.

    ms172492.alert_note(ru-ru,VS.90).gifПримечание.

    Этот путь можно также задать в файле makefile или в качестве переменной среды при помощи диалогового окна Мой компьютер -> Свойства.

  • Ссылки на сборки, если они необходимы. Для этого используется параметр -r; имена сборок объединяются в переменной.

  • Команды компилятора с соответствующими параметрами и аргументами, описанными в приводимом далее подразделе "Параметры компилятора". В число аргументов входят ссылки на переменные и звездочка ("*"), позволяющая включить дополнительные аргументы.

Создание пакетного файла для компиляции

  1. Создайте в текстовом редакторе новый файл и добавьте в него содержимое примера пакетного файла, приведенного ниже, для выбранного языка программирования.

  2. Измените переменную NETCF_PATH, если это необходимо.

    По умолчанию сборки платформы .NET Compact Framework расположены в папке C:\Program Files\Microsoft.NET\SDK\версия\CompactFramework\WindowsCE.

    ms172492.alert_note(ru-ru,VS.90).gifПримечание.

    Если используется платформа .NET Compact Framework, включаемая в состав Visual Studio 2008, сборки находятся в папке C:\Program Files\версия Visual Studio\SmartDevices\SDK\CompactFramework\3.5\версия\WindowsCE.

  3. Сохраните файл и дайте ему название — например, vbcc.bat для пакетного файла Visual Basic или cscc.bat для пакетного файла C#.

Компиляция приложения с использованием пакетного файла

  1. Убедитесь в том, что системный путь включает путь к платформе .NET Framework.

    Компилятор Visual Basic (vbc.exe) и компилятор Visual C# (csc.exe) находятся в папке %systemroot%\Microsoft.NET\Framework\версия. Переменная системного пути должна включать этот путь.

  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

Включена информация по требованию для получения файлов .targets путем установки Visual Studio.

Исправление ошибки содержимого.