방법: 명령 프롬프트에서 컴파일
업데이트: 2008년 7월
명령 프롬프트에서는 다음 몇 가지 방법으로 .NET Compact Framework 응용 프로그램을 컴파일할 수 있습니다.
Microsoft Build Engine(MSBuild) 사용
배치 파일 사용
두 방법 모두 Windows SDK(소프트웨어 개발 키트)에서 제공하는 Visual C# 및 Visual Basic 컴파일러를 사용합니다. 하지만 MSBuild에는 현재 Visual Studio에만 제공되는 .targets 파일이 있어야 합니다.
MSBuild를 사용하여 컴파일
MSBuild를 사용하여 명령 프롬프트에서 빌드하려면
MSBuild.exe가 시스템 경로에 있는지 확인합니다.
MSBuild.exe는 %systemroot%\Microsoft.NET\Framework\version에 있습니다. 시스템 경로 변수에는 이 경로가 포함되어야 합니다.
명령 프롬프트에서 .NET Compact Framework 응용 프로그램에 대한 프로젝트 파일이 있는 디렉터리로 이동합니다. 프로젝트 파일의 확장명은 .sln, .vbproj 또는 .csproj입니다.
다음 명령을 입력합니다.
msbuild.exe projectname
명령 프롬프트 창에 빌드 프로세스에 대한 정보가 제공됩니다.
배치 파일을 사용하여 컴파일
배치 파일을 사용하여 전체 .NET Framework(데스크톱) 어셈블리 대신 .NET Compact Framework 어셈블리를 대상으로 지정할 수 있습니다. 배치 파일을 직접 사용하거나 메이크파일 유틸리티에서 호출하여 .NET Compact Framework가 엔터프라이즈 빌드 시스템에 통합되도록 할 수 있습니다.
배치 파일에는 다음 정보가 포함됩니다.
.NET Compact Framework 어셈블리 위치에 대한 경로 변수. 다음 예제에서는 NETCF_PATH를 사용합니다.
참고: 이 경로를 메이크파일에 지정하거나 내 컴퓨터등록 정보 대화 상자를 사용하여 환경 변수로 지정할 수도 있습니다.
어셈블리에 대한 참조가 필요합니다. -r 스위치를 사용하여 변수에 어셈블리를 연결합니다.
이 항목의 뒷부분에 나오는 “컴파일러 스위치” 단원에 설명되어 있는 적절한 스위치와 인수가 지정되어 있는 컴파일러 명령. 인수에는 변수 참조와 추가 인수를 포함하기 위한 별표(*)가 포함됩니다.
컴파일을 위해 배치 파일을 만들려면
텍스트 편집기에서 새 파일을 만든 후 다음 예제에 표시된 것처럼 원하는 프로그래밍 언어에 대한 샘플 배치 파일의 내용을 추가합니다.
필요한 경우 NETCF_PATH 변수를 조정합니다.
기본적으로 .NET Compact Framework 어셈블리는 C:\Program Files\Microsoft.NET\SDK\version\CompactFramework\WindowsCE 폴더에 있습니다.
참고: Visual Studio 2008에 포함된 .NET Compact Framework를 사용하는 경우 어셈블리는 C:\Program Files\Visual Studio version\SmartDevices\SDK\CompactFramework\version\WindowsCE에 있습니다.
Visual Basic 배치 파일의 경우 vbcc.bat, C# 배치 파일의 경우 cscc.bat와 같이 파일 이름을 지정하여 저장합니다.
배치 파일을 사용하여 응용 프로그램을 컴파일하려면
시스템 경로에 .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 |
전체(데스크톱) .NET Framework의 어셈블리를 무시하도록 Visual C# 컴파일러에 지시합니다. Visual Basic 컴파일러의 경우에는 이로 인해 컴파일러가 Vbc.rsp 파일을 읽을 수 없습니다. |
-netcf |
전체(데스크톱) .NET Framework의 어셈블리를 무시하도록 Visual Basic 컴파일러에 지시합니다. |
-noconfig |
필수적 요소 |
-sdkpath |
Visual Basic에서 Mscorlib.dll을 찾는 데 필요합니다. |
참고 항목
기타 리소스
.NET Compact Framework의 응용 프로그램 빌드 및 핵심 작업
변경 기록
날짜 |
변경 내용 |
원인 |
---|---|---|
2008년 7월 |
Visual Studio를 설치하여 .targets 파일을 얻기 위한 요구 사항에 대한 정보가 포함되었습니다. |
콘텐츠 버그 수정 |