컴터 사양이 딸려서 VS로 작업하기 힘들때 유용하게 사용할수 있을것이다.

아니면.. 걍... 취향따라 쓰던지.. 쩝..


ㅇ. 컴파일러 화일명 : vbc.exe
(닷넷 프레임웍 폴더 확인)

ex)

vbc File.vb (단순 컴파일)
vbc /target:library file.vb (library(dll)로 컴파일)
vbc /out:My.exe file.vb (output file 지정)
vbc /defime:DEBUG=1 /optimize /out:File2.exe *vb (현재 디렉토리에 있는 모든 vb파일을 File2.exe로 최적화 시켜서 컴파일, DEBUG 조건 컴파일)
vbc /target:library /out:Something.dll *.vb (library(dll)로 컴파일 output 파일 지정)



ㅇ. 옵션 :

최적화(Optimization) : /optimize

/optimize[+] 최적화 수행 (안써주면 default)
/optimize- 최적화 수행하지 않음

-. 실행 파일을 작고, 빠르게 만들지만 디버깅이 어렵게 된다.
-. 그러므로 디버깅모드시에는 수행하면 안됨

출력 파일 지정 : /out:filename, /target

-. 이름을 지정하지 않은경우
: .exe는 sub main이 들어 있는 소스코드 파일 이름을 사용
: .dll은 첫번째 소스 코드 파일 이름을 사용

-. /targer 출력파일의 형태를 지정

/targer:exe 실행가능한 콘솔 응용프로그램을 생성
/target:library dll을 만든다.
/target:module 어셈블리에 추가할수 있는 모듈을 생성
: 모든 닷넷 언어에서 가져다가 사용가능
/target:winexe 실행 가능한 윈도우 프로그램을 생성


.NET 어셈블리 : /addmodule, /delaysign, /imports, /keyfile 등

/addmodule:module[,module2] 현재 컴파일 하고 있는 프로젝트에서 사용할수 있도록 지정한 모듈로부터 타입정보를 얻어옴.
/delaysign[+또는-] 어셈블리안에 사인을 함.. /keyfile 혹은 /keycontainer와 같이 사용 (모듈안에 Digital Signature를 삽입)
/imports:namespace[,namespace] 지정한 어셈블리에서 네임스페이스를 가져온다.


디버깅 오류체크 : /debug, /nowarn, /quiet, /removeintchecks 등

/bugreport 버그를 보고하기 쉽도록 여러 정보를 담은 파일을 생성
/debug 디버그 정보를 만들거나 생략 (반드시 알아야할 옵션중 하나)
/nowarn 컴파일시 경고 메세지를 만들지 않는다.
/quiet 문법관련 오류나 경고에 대한 코드를 포시하지 않는다.
/removeintchecks 정수형 오버플로우를 체크하지 않음
/warnaserror 경고를 오류로 표시한다.


선처리(Preprocessor) : /define

/define:symbol=value[,symbol=value] 조건 컴파일을 위해 사용할 상수를 정의

Sub Mytest()
#if debugmode then
'디버그 문장
#Else
'평상시의 코드
#End if

상기 예제에서 define시에 DEBUGMODE=True로 하면 디버그 문장이 False면 평상시 코드가 실행될 것이다.


자원(Resource) : /resource, /linkresource, /win32icon 등

/linkresource 리소스 연결
/resource 어셈블리 모듈안에 리소스 포함
/win32icon 출력 파일에 .ico 파일을 추가
/win32resource 출력 파일에 Win32 리소스를 추가

기타 옵션들 : @, /?, /baseaddress, /main, /nologo 등

/@response_file 컴파일러 옵션과 소스코드 파일들을 명시한 파일(중요)
/? 또는 /help 컴파일러 옵션 표시
/baseaddress dll의 기본 주소를 지정한다.
/main Sub Main 프로시져가 들어있는 클래스를 명시
/nologo 컴퍼일러 배너 정보를 생략
/optionexplicit 변수들을 선언한 후 사용할 수 있도록
/optionstrict 유형에 대한 체크를 강력히 함, 묵시적인 유형변환 금지
/optioncompare 문자열 비교시 바이너리로 할 것인지, 문자로 할 것인지 지정
/recurse 컴파일 할 소스 파일을 가져오기 위해 하위 폴더까지 검색
/rootnamespace 모든 유형 선언에 대한 네임스페이스 지정


ex)

vbc @Response.txt module1.vb
혹은
vbc @Response.txt /out:test1.exe module1.vb

Response.txt 파일 내용 :

/Import:"Microsoft.VisualBasic"
/Import:"System"
/Import:"System.Collections"
/Import:"System.Diagnostics"

-> vbproj 파일안에 Import 부분의 내용

+ Recent posts