서론
유니티 프로그래밍을 하다가 C# 언어에 대한 한계에 부딪혀서 기본을 배우기로 했다.
생각해보면 C/C++, Java는 공부해놓고 유니티는 그냥 썼다.
대체 왜지? 하지만 그렇게 여기까지 해낸 나를 칭찬해. 이제부터 공부하자.
일단,
실습 환경은
VSCode
C# 9.0 // Unity에 C#9.0 버전 적용 안 되는 것은 알고 있다. 실제 사용시에는 Unity 문서를 참고할 예정이다.
dotnet sdk 6.0 // 얘도 아직 Unity에서 적용 안 되는 것으로 알고 있다.
공부 교재는
C# 교과서, 박용준, 길벗
이상이다.
아무튼 1부를 공부하면서 굳이 Hello World나 WriteLine 실습 정도 진행하자고 프로젝트를 여러 개 만드는 것이 싫었다. 그렇다고 터미널상에서 경로를 달리하기 위해 폴더를 여러 개 만드는 것도 마음에 안 든다. 그냥 같은 수준에서 소스코드 여러 개 두고 각각 실행하고 싶었다. 이러한 생각으로 찾아낸 것이 컴파일러 옵션이다.
본론
1. 이 프로젝트는 처음에 터미널에 dotnet new console 명령어를 실행하여 만들었다.
2. 이후에 파일을 추가하여 새로운 코드를 작성하였다.

3. 같은 폴더 내에 있는 실습파일 HelloWorld.cs와 WriteLineDemo1.cs는 각각 Main() 함수를 포함한 파일이다.


4. 이대로 터미널에 dotnet run 명령어를 통해 실행하면 이러한 오류 메시지가 출력된다.

프로그램에 진입점이 두 개 이상 정의되어 있습니다. /main으로 컴파일하여 진입점이 포함된 형식을 지정하세요.
인터프리터 언어에 익숙해져서 그렇지 생각해보면 프로그램에서 main 메서드는 언제나 하나만 있어야 하는 게 맞다.
하지만 테스트 코드 하나 실행하는 데 여러 개의 프로젝트를 만드는 것은 역시 싫다.
해결 방법
5. file.csproj 파일에 들어가서 <PropertyGroup></PropertyGroup> 사이에 컴파일러 옵션 작성하기


나는 <StartupObject>namespace.program</StratupObject> 옵션을 사용했다.
필요한 옵션이 다른 사람들을 위해서 아래쪽에 마이크로소프트 문서 링크를 붙여둡니다.
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/compiler-options/advanced
C# 컴파일러 옵션 - 고급 시나리오
고급 C# 컴파일러 옵션. 이러한 옵션은 고급 시나리오에서 사용됩니다.
docs.microsoft.com
결론
때로는 파일 각각의 소스코드를 실행해야할 필요가 있다.
그럴 때에 컴파일러 옵션을 사용하면 편하다!
하지만 역시 main 메서드는 프로그램에서 한 개만 있어야 한다.
애초에 이 방법도 모든 파일이 실행되는 것이 아닌, 지정한 한 개의 파일만 실행될 뿐이니까..
실제 프로그램을 작성할 때는 꼭 정상적인 절차로 프로그램을 작성하자.
'박준영 > Programming' 카테고리의 다른 글
| [Hackerank]Introduction: Say "Hello, World!" With Python (0) | 2019.09.19 |
|---|