Практическое руководство. Компиляция в командной строке
Обновлен: Июль 2008
Существует несколько способов компиляции приложения .NET Compact Framework в командной строке. В их числе:
Использование подсистемы Microsoft Build Engine (MSBuild);
Использование пакетных файлов.
В обоих методах используются компиляторы Visual C# и Visual Basic, входящие в состав пакета SDK (пакет средств разработки программного обеспечения) для Windows. Однако для MSBuild требуются файлы .targets, которые в настоящее время поставляются только в Visual Studio.
Компиляция с использованием MSBuild
Построение из командной строки с использованием MSBuild
Убедитесь, что файл MSBuild.exe находится в каталоге, указанном в системном пути.
Файл MSBuild.exe расположен в каталоге %systemroot%\Microsoft.NET\Framework\версия. Переменная системного пути должна включать этот путь.
В командной строке перейдите в каталог, в котором находится файл проекта приложения .NET Compact Framework. Файл проекта должен иметь расширение SLN, VBPRPOJ или CSPROJ.
Введите следующую команду:
msbuild.exe projectname
В окне командной строки предоставляются сведения о процессе построения.
Компиляция при помощи пакетных файлов
Пакетные файлы можно использовать для получения сборок .NET Compact Framework, а не полной платформы .NET Framework (для настольного компьютера). Пакетные файлы можно использовать напрямую или же вызывать их с помощью служебной программы построения для интеграции .NET Compact Framework в системы построения масштаба предприятия.
Пакетный файл содержит следующие сведения:
Переменная пути, задающая местонахождение сборок .NET Compact Framework. В следующем примере используется переменная NETCF_PATH.
Примечание. Этот путь можно также задать в файле makefile или в качестве переменной среды при помощи диалогового окна Мой компьютер -> Свойства.
Ссылки на сборки, если они необходимы. Для этого используется параметр -r; имена сборок объединяются в переменной.
Команды компилятора с соответствующими параметрами и аргументами, описанными в приводимом далее подразделе "Параметры компилятора". В число аргументов входят ссылки на переменные и звездочка ("*"), позволяющая включить дополнительные аргументы.
Создание пакетного файла для компиляции
Создайте в текстовом редакторе новый файл и добавьте в него содержимое примера пакетного файла, приведенного ниже, для выбранного языка программирования.
Измените переменную NETCF_PATH, если это необходимо.
По умолчанию сборки платформы .NET Compact Framework расположены в папке C:\Program Files\Microsoft.NET\SDK\версия\CompactFramework\WindowsCE.
Примечание. Если используется платформа .NET Compact Framework, включаемая в состав Visual Studio 2008, сборки находятся в папке C:\Program Files\версия Visual Studio\SmartDevices\SDK\CompactFramework\3.5\версия\WindowsCE.
Сохраните файл и дайте ему название — например, vbcc.bat для пакетного файла Visual Basic или cscc.bat для пакетного файла C#.
Компиляция приложения с использованием пакетного файла
Убедитесь в том, что системный путь включает путь к платформе .NET Framework.
Компилятор Visual Basic (vbc.exe) и компилятор Visual C# (csc.exe) находятся в папке %systemroot%\Microsoft.NET\Framework\версия. Переменная системного пути должна включать этот путь.
В командной строке введите имя пакетного файла, за которым укажите исходный файл, например:
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 требует явного импорта следующих пространств имен:
|
-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. |
Исправление ошибки содержимого. |