본문 바로가기

개발일지/C#

[C# / VisualStudio2022] 프로젝트 정리 5 - 프로그램 수정

 

배포 전 프로그램 실행에는 문제 없지만 거슬리는 것들을 정리

 


 

 

1. 프로그램 실행시 자동으로 켜지는 ChromeDriver 콘솔 창 숨기기

 

크롬 드라이버에 오류 없이 정상적으로 연결되었다는 콘솔창이지만, 해당 프로그램의 사용자는 외부인이며 개발과 무관하다. 때문에 콘솔창이 노출될 경우 사용자 입장에서는 오류로 오해할 소지가 있어 배포 전 해당 창이 표시되지 않도록 처리할 필요가 있다. 

 

private static ChromeOptions chromeOptions = new ChromeOptions(); // 클래스 단에서 객체 선언

        public static void SetupChromeDriver()
        {
            try
            {
                // WebDriverManager로 chromedriver 자동 다운로드 + 경로 세팅
                new WebDriverManager.DriverManager().SetUpDriver(new WebDriverManager.DriverConfigs.Impl.ChromeConfig());

                // 콘솔창 숨기기 위한 서비스 설정
                var service = ChromeDriverService.CreateDefaultService();
                service.HideCommandPromptWindow = true;
                _driver = new ChromeDriver(service, chromeOptions); // ChromeDriver 생성

                Debug.WriteLine("commondata.DriverUrl 값: " + commondata.DriverUrl);

                _driver.Url = commondata.DriverUrl; 
                _driver.Manage().Window.Maximize(); // 브라우저 창 최대화

                Thread.Sleep(1000);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SetupChromeDriver 예외: " + ex.Message);
            }
        }

 

 

// 콘솔창 숨기기 위한 서비스 설정
var service = ChromeDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
_driver = new ChromeDriver(service, chromeOptions); // ChromeDriver 생성

 

프롬프트 창을 숨기는 설정을 한 뒤 크롬드라이브 설정에 변수로 넣어준다.

 

 


 

2. 솔루션 이름 변경

임시로 사용하던 이름을 변경하려고 함

 

windows 탐색기에서 해당 이름이 들어간 폴더 및 파일 이름을 변경한다.

 

- 해당폴더
- 해당폴더\test_solution.sln
- 해당폴더\test_solution\
- 해당폴더\test_solution\test_solution.csproj
- 해당폴더\test_solution\test_solution.csproj.user

변경한 뒤 .sln 파일 재실행 하면 아래처럼 

 

 

해당 파일을 찾을 수 없다고 나오면?

솔루션 이름 우클릭 > 추가 > 기존 프로젝트 추가 > 실제 위치의 .csproj 파일 선택/열기

끝!!!

 

...인 줄 알았으나 빌드 후 프로그램 이름이 변경전과 동일하다면 아래를 확인해야 한다.

 


- 솔루션 이름 우클릭 > 속성 > 어플리케이션 > 일반 > 아래쪽의 어셈블리 이름

 

그럼에도 Release 폴더 내의 파일 이름이 변경되지 않았다면 

 

상단 play 버튼 왼쪽 콤보가 Release가 아니라 Debug로 되어 있진 않은지 확인 후 재빌드

 


 

3. Debug/Release 폴더 내부 net8.0-windows 폴더명 변경 또는 삭제 

 

해당 이름은 SDK가 자동 생성하는 폴더이기 때문에 2번에서 변경한 것처럼 절대로 직접 폴더명을 변경해서는 안 됨!!! Visual Studio에서 출력 경로를 변경해줘야함. 

 

.csproj 파일을 열어서 <PropertyGroup> 내부에 아래와 같이 <OutputPath>, < AppendTargetFrameworkToOutputPath>를 추가한다. 이는 net8.0-windows 이 자동 생성되도록 설정 돼 있기 때문에 TargetFramework를 false로 설정해둬야 함

 

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <Optimize>True</Optimize>
	  <OutputPath>bin\Release\TEST_folder\</OutputPath>
	  <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
  </PropertyGroup>

 

 


 

4. 실행 파일 아이콘 변경하기

 

변경 전 실행파일.exe의 로고는 생략 돼 있기 때문에 밋밋한 아이콘이 생성된다. 처음 프로그램을 구동하려는 사람은 어떤 아이콘이 실행프로그램이지? 헷깔릴 수 있기 때문에 파일 아이콘 변경 하는 것을 추천한다.

 

4-1) 먼저 등록할 이미지 파일을 .icon 확장자로 변환한다.

 

 

Convertio — 파일 변환기

300가지 이상의 포맷 지원 저희는 300가지 이상의 서로 다른 파일 포맷 간의 25600가지 이상의 서로 다른 변환을 지원합니다. 다른 어떤 변환기보다 많은 수입니다. 신속 및 간단 페이지에 간단히

convertio.co

 

4-2) 솔루션 이름 우클릭 > 속성 > 애플리케이션 > Win32 리소스 > 아이콘 

아이콘 파일 설정 후 빌드 하면 끝!!

 

아이콘 이미지 선택 후 빌드 했는데, 아 이미지가 마음에 안드는데? 싶어서 중간에 한 번 바꿨다. 근데? 변경한 뒤 재빌드를 해봐도 자꾸 첫번째 설정했던 아이콘이 남아 있지 않는가??? 왜지?

 

1. 이런 경우 다시 위 설정에서 기본값으로 다시 설정한 뒤 재빌드

 

2. 아래 코드를 메모장에 붙여 넣은 뒤 .bat 배치 파일로 저장

3. 관리자 권한으로 실행

 

 

taskkill /IM explorer.exe /F
del /AH "%localappdata%\IconCache.db"
start explorer.exe

 

4.  다시 위 설정에서 아이콘 파일 재설정 후 재빌드

 

 

찐으로 정상적으로 변경된 걸 확인할 수 있을 거다.

 


 

월요일 배포 시작인데 너무 불안하다....... 주말인데 1도 안 즐겁고요. 걍 빨리 월요일이나 됐으면 좋겠고요. 왜 개발을 한다고 나대가지고 스스로 불러 온 재앙에 짓눌리는가...... 리눅스 실기도 공부해야 되는데 할게 너무 많다. 실기 비용 4만원대 였는데 아놔 떨어지게 생겼네 ㅎㅎ하하하ㅏ 더 늦기 전에 다른 살길을 찾아야 되나 하 스트레스

 

글고 오늘 이 닦고 물 치실 하다가 예전에 깨져서 붙여 놨던 치아도 떨어졌고요. 미래를 예견한건가? 도망치라는 신호인가? 오늘 집 밖으로 한 발자국도 안 나갔는데 왜 이런 일이 생기는 거지? ㅋㅋㅋㅋㅋ ㅋㅋ ㅋ ㅋ ㅋ 괜히 실성한 듯 웃다가 정신 채리고 일요일 문 여는 치과 찾아서 예약했다. 불행 중 다행쓰~~ 이대로 뭐 먹으면 이빨 와장창 깨질 것 같은데 럭키하게도 떡튀순 야무지게 시켜 먹은 뒤라 내일 오전 진료까지 참으면 돼서 다시 기분 좋아짐 ㅋㅋ 오예이~ 예약하는 김에 스케일링 예약까지 했으니 난 완전 행운아 인거임~~!!!

 

하루 종일 집에서 컴퓨터만 붙잡고 앉아 있다보니 미칠 것 같아서 주저리 떠들어 보았다.

 

 

 아무튼.. 바쁜 거 다 끝내고 나면

뒤집어지게 놀러다닐 거임..

그때까지 참아보자 아자뵤우~~~!