본문 바로가기
[ Program ]/c#스터디

3.솔루션 / 프로젝트 , 다른곳에서 파일 실행해보기 , 빌드이벤트

by 관이119 2021. 9. 19.





프로젝트는 내가 최종적으로 실행할 파일(exe 파일) 을 만드는데 필요한 소스,참조하는 DLL 등 모든 필요한 것들을 모아놓은 것을 말한다.

 

 

그림1

 


프로젝트를 만들때 1번그림과 같이 프로젝트명과 실제 프로젝트를 물리적으로 저장할 위치를 지정할 수 있다.

일반적으로 프로젝트명은 내가 실제로 만들 exe 파일 명칭과 동일하다.

물론 다른곳에서 변경해줄수도 있는데 그건 나중에 다시 설명한다.



그림2


그림2번에 보면 솔루션과 프로젝트를 표시해 놨는데 프로젝트는 위에서 말한거처럼 exe 파일을 만드는데 필요한 것들을 모아둔 것이고

솔루션은 그 프로젝트들을 관리하기 편하게 하나로 모아둔 것이라고 생각하면 된다.

프로젝트는 솔루션에서 마우스 우클릭한 후  "추가" > "새프로젝트"  로 현재 솔루션에 프로젝트를 추가할 수 있다.

물론 프로젝트 하나에 솔루션 하나씩 해서 여러개 만들수도 있다.




그림2와 같이 하나의 솔루션에 프로젝트가 여러개 들어 있을경우  굵게 표시되어있는 프로젝트가 디버깅할때 실행된다.

각각의 프로젝트에서 우클릭한후 "시작프로젝트로 설정" 을 눌러주면 해당프로젝트가 디버깅 할때 실행되는 프로젝트가 된다.

2번그림같은경우는 디버깅을 하게 되면  WindowsFormsApp5 가 시작프로젝트가 된다.

디버그는 1장에서 연습한내용처럼  위쪽메뉴중 "디버그" > "디버깅시작" 을 눌러주면 된다.

기본실행키는 F5 이고 디버깅을 한다는 의미는 내가 만든 프로그램을 내PC에서 실행시켜본다정도로 이해하면 된다.




프로젝트나 솔루션은 "빌드" 를 할수 있는데 "빌드" 는 exe 파일을 만들어 내는 명령이라고 생각하면 된다.

솔루션에서 빌드하면 솔루션에 속해 있는 모든 프로젝트가 빌드 되고 프로젝트에서 빌드 하면 해당 프로젝트만 빌드 된다.


그림3


3번그림처럼 솔루션에서 빌드하면 (빌드할때는 솔루션이든 프로젝트이든 다시빌드를 누른다.) 2장에서 확인한것처럼 각각의 프로젝트 폴더의

bin 폴더에 exe 파일이 생성된다.

이렇게 여러 프로젝트를 하나씩 exe 파일을 찾아가려면 상당히 귀찬은 작업이라 한번에 할수 있는 옵션이 있다.

 

 

그림4


4번 그림처럼 각각의 프로젝트에서 마우스 우클릭해서 "속성" 을 누르면 4번그림중앙에 보이는거처럼 속성 창이 열린다.

그리고 5번그림처럼 "빌드 이벤트" 탭으로 가서 "빌드 후 이벤트명령줄" 에 

copy $(TargetPath) "d:\1"

 라고 적어준다.( 띄어쓰기 중요 , " 도 꼭넣어줄것)

형식은 copy $(TargetPath) "exe파일을 복사해줄폴더" 이다.

위에서 예제로 적은대로 하면 d: 에 1 이라는 폴더내에 해당프로젝트들의 빌드된 exe 파일들이 생성된다.



그림5

 


빌드후에는 5번째 이미지와 같이 하단에 빌드 성공 메세지가 표시되는지 확인해야 한다.

빌드가 제대로 되지않을 경우는 내가 수정한 내용이 exe파일에 반영되지 않는다.

위에서 설명한대로 d:\1 이라는 폴더에 exe 파일들을 생성했다면 해당파일들을 실행해보자.

 

 

 

그림6

 


실행하면 기본 윈도우 창이 하나뜬다. 그창을 그대로 두고 프로젝트를 다시 빌드하면 6번째 이미지와 같은 에러가 나온다.

프로그램이 실행중이라서 실행중인 프로그램을 덮어쓰기 할수 없어서 "빌드후 이벤트" 에서 에러가 발생한 내용이다.

이경우는 내가 수정한 내용들이 exe 로 만들어지지 않으므로 실행중인 파일들을 닫고 다시 빌드를 눌러 정상적으로 빌드 되는지 확인한다.




**********
빌드후 이벤트가 정상적으로 되지 않는경우가 있음.
윈도우 copy 명령어가 정상적으로 작동하지않아서 그런데 원인은 나도 현재 모름. 찾는대로 여기 다시 올릴예정
mkdir d:\3
copy $(TargetPath) d:\3
현재는 그런경우 위와같이 할것
**********





***숙제 : a.exe , b.exe , c.exe 파일을 만들어보고 한폴더에 있는 상태로 캡쳐해서 올릴것. 3개의 프로젝트는 하나의 솔루션으로 만들고 해당 프로젝트와 솔루션 부분도 캡쳐해서 올릴것

댓글