오랜만에 Visual Studio 설치하고 Console 프로그램을 작성해봤다. 빈 c 파일이니깐...


#include "stdio.h"

void main(void)
{
	printf("Hello!\n");
}


아주 단순한 출력부터 해보았다.

얼래.. 아무키나 누르세요를 하지 않는다. 실행하자마자 바로 종료.


인터넷 좀 찾아보니 서브시스템 설정을 해주어야 한다.


프로젝트 -> 속성에 들어가서 아래와 같이 설정

여하튼 하위 시스템에 콘솔(/SUBSYSTEM:CONSOLE) 이라는 놈이 들어가야 한다.



그리고 확인 누른다음 F5를 누르면?



전에 비해 뭔가 말이 많아졌지만 여하튼 원하던 결과다.

RamDisk 관련하여 환경 변수 TEMP와 TMP의 경로를 변경 후 발생한 것입니다.

관련 에러 메시지는

---------------------------------------------------------------------------------------------

오류 1 "GenerateResource" 작업에서 예기치 않은 오류가 발생했습니다.
System.TypeInitializationException: 'Microsoft.Build.Utilities.FileTracker'의 형식 이니셜라이저에서 예외를 Throw했습니다. ---> System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
   위치: Microsoft.Build.Utilities.FileTracker..cctor()
   --- 내부 예외 스택 추적의 끝 ---
   위치: Microsoft.Build.Utilities.FileTracker.EnsureFileTrackerOnPath(String rootPath)
   위치: Microsoft.Build.Tasks.GenerateResource.Execute()
   위치: Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   위치: Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult) Test

---------------------------------------------------------------------------------------------

라고 나타납니다.

처음엔 뭔 소린가 했는데 구글링을 하다보니 나오네요...
관련 : http://stackoverflow.com/questions/3221565/microsoft-build-utilities-filetracker-threw-an-exception-error-happens-with-diff

아래처럼 따라하시면 됩니다.

0. RamDisk 또는 기타 사유로 환경 변수의 TEMP, TMP의 값을 변경했었을시 이 작업을 진행하세요.
1. 탐색기를 이용하여 %USERPROFILE%\AppData\Local\ 로 이동을 합니다.
2. Temp 폴더 삭제
3. 실행 -> cmd 실행시킨 후 아래 2줄을 입력합니다.
   cd %USERPROFILE%\AppData\Local\
   mklink /j TEMP "Z:\TEMP"
4. 탐색기를 이용하여 %systemroot% 로 이동을 합니다.
5. Temp 폴더 삭제
6. 실행 -> cmd 실행시킨 후 아래 2줄을 입력합니다.
   cd %USERPROFILE%\AppData\Local\
   mklink /j TEMP "Z:\TEMP"
7. 기존의 변경된 환경 변수의 TEMP, TMP의 값을 원상복귀합니다.
   TEMP, TMP 기본값 보기 : http://astinlen.tistory.com/11

추가적으로 RamDisk에서 부팅시바다 자동으로 TEMP 폴더가 생성되지 않는 RamDisk라면 Z:\TEMP를 Z:\로 하셔도 됩니다.

궁금한 점은 댓글로...