이전에 "[.Net] Windows 서비스 응용 프로그램 만들기"를 통해 서비스 프로그램을 만들어 보았습니다. (참고 : [.Net] Windows 서비스 응용 프로그램 만들기) 로컬상에서 테스트를 하셨다면 이런 의문이 드실 겁니다. "배포는 어떻게 하지?" 이전 글에서 사용하던 개발자 콘솔이 일반유저들에게 있을리가 만무 하죠 ㅎㅎㅎ 결국 설치 프로그램을 제공해야 합니다. 잘 아시다 싶이 비주얼 스트디오에서는 설치프로젝트를 제공하고 있습니다. 우리는 이 '설치 프로젝트'를 통해 프로그램을 배포 해 보겠습니다. (참고 : MSDN - 연습: 구성 요소 디자이너에서 Windows 서비스 응용 프로그램 만들기) 1.설치 프로젝트 만들기 설치 프로젝트는 같은 솔루션 안에 만드는게 좋습니다. 새 프로젝트 추가 >..
계속 윈도우에 상주해있어야 하는 프로그램을 일반적인 응용프로그램으로 만들면 몇 가지 문제가 발생합니다. 일단 매번 켜주어야 하는데 이것은 메크로라던가 시작 프로그램에 등록함으로써 어느 정도 해결됩니다만..... 계정 로그 오프 문제나 예기치 않은 재부팅 문제가 있다면 휴가 갔다가 원격 접속해서 프로그램 올리는 불상사가 생기죠 ㅎㅎㅎ;; 이런 경우 프로그램을 윈도우 서비스로 등록하면 계정의 로그온 상태와 상관없이 윈도우가 시작되면 동작하기 때문에 편리합니다. 여기서 한가지 주의해야 할 점은 서비스 프로그램은 일반적인 방법으로는 디버깅을 할 수 없습니다-_-;; 서비스에 등록해야만 동작을 하기 때문이죠. 그렇기 때문에 중단점 같은 일반적인 디버깅작업을 할 수 없습니다. 미리 윈폼 응용프로그램을 만들어 테스트..
자신이 만든 컨트롤에 특정 속성을 넣을수 있습니다. 그것도 간단하게 말이죠. 1. 비하인드 코드 작성 일단 비하인드코드에 해당속성을 어떻게 처리할지를 구성해 줍니다, /// /// 지정할 텍스트 /// [Category("Text"), Description("지정할 텍스트")] public string Text { get { return this.labText.Text; } set { this.labText.Text = value; } } Category : 속성 창에 표시될 이름 Description : 속성에 대한 설명(밑에 속성설명창에 나오는 내용인데.... 바로 적용이 안되는 듯 하네요) (참고 : MSDN - CategoryAttribute 클래스) 일반적인 겟셋(getter, setter)접근..
* .Net 4.0 기준 * 닷넷에서 다국어구현은 편하게 되어 있습니다. 리소스파일만 연결해놓으면 필요할 때 언어를 지정하여 표시가 가능하기 때문입니다. 연관글 영역 1. App_GlobalResources 폴더 만들기 닷넷에서 몇 가지 예약 이름 폴더가 있는지 그중 하나가 리소스 폴더 들입니다. 이런 폴더들은 그냥 폴더 추가만 해서 같은 이름으로 만들면 같은 역할을 합니다. 하지만 그렇게 만들면 찜찜하죠잉? ㅎㅎ 해당 프로젝트에서 오른쪽 클릭 > 추가 > ASP>NET 폴더 추가 > App_GlobalResources 클릭 이렇게 하면 자동으로 App_GlobalResources 폴더가 생성됩니다. 2. 리소스 파일 추가 이제 멀티랭귀지용으로 사용할 리소스를 만들겠습니다. App_GlobalResour..
닷넷이 설치되어 있는데 실행하려고 하면 특정 컴퓨터에서 CLR error: 80004005. The program will now terminate. 이런 오류가 납니다. 연관글 영역 1. 오류 원인 이 오류는 닷넷프레임웍이 제대로 설치되지 않아 나오는 오류입니다. 닷넷이 제대로 설치되지 않는 경우는 일반적으로 - 윈도우 업데이트 실패 혹은 강제 종료 등으로 인해 롤백이 제대로 되지 않는 경우 - 제대로 되지 않은 설치파일을 사용하는 경우 -악성코드나 바이러스등으로 설치가 비정상적으로 되거나 관련 파일들이 손상된 경우 등이 있습니다. 이유야 어떻든 보통은 닷넷프레임웍만 다시 설치하면 해결이 됩니다. '제어판'으로 가서 '프로그램 추가/제거'에서 'Microsoft .NET Framework' 관련된 항목..
상황에 따라서 지금 실행중인 프로세스들의 정보를 가저와야 할때가 있습니다. 그런경우 C#에서는 'System.Diagnostics.Process'를 사용합면 됩니다. //나의 프로세스 정보를 가져옵니다. System.Diagnostics.Process MyProcess = System.Diagnostics.Process.GetCurrentProcess(); //모든 프로세스의 정보를 가져 옵니다. System.Diagnostics.Process[] AllProcess = System.Diagnostics.Process.GetProcesses(); //특정 이름의 프로세스를 가져옵니다. System.Diagnostics.Process[] Process_Name = System.Diagnostics.Proc..
접근 한정자라는 것은 일반적으로 함수나 변수의 범위를 정할때 쓰는 명령어(?)입니다. 우리가 흔이 쓰는 것이 public private protected 가 있습니다. 1. 인터널(internal)이란 무엇인가? 여기에 .NET에는 독특한 한정자가 있는데 인터널(internal)이 있습니다. 같은 어셈블리에서 동작한다고 설명이 되있죠. (참고 : internal(C# 참조) ) 한마디로 참조하는 쪽에서는 인터널로 선언된 구현을 볼수 없다는 것입니다. 자신의 프로젝트 안에서는 퍼블릭(public)와 동일하게 동작합니다. 2. 테스트 해보기 같은 프로젝트일때 이건 다른 프로젝트일때입니다. 같은 프로젝트에서는 퍼블릭(public)처럼 동작하며 참조등을 사용용하여 다른 프로젝트에 사용할때는 프라이빗(privat..
닷넷에서는 몇 가지 형변환 방법이 있는데 그중 괄호로 사용하는 캐스팅 방법은 다른 언어에서도 사용하는 방법이고 이전부터 사용하던 방법입니다. 예> 예> object oTemp = new object(); oTemp = 3.0; dTest = (double)oTemp; 1. 문제의 발견 그런데 형 변환을 하다가 이상한 에러를 발견하였습니다. 'object'형을 'float'로 캐스팅을 하니 에러가 빵~ object oTemp = new object(); oTemp = 3.0; double dTest = 1.0; float fTest = 1.0f; dTest = (double)oTemp; fTest = (float)oTemp; 흠? 오류의 말은 써있는 데로 "형변환이 안 되니 확인해 봐라" 입니다. 원래 '..
저장 프로시저를 이용할 때 리턴되는 값은 크게 리턴(Return)과 셀랙트(Select)로 나눌 수 있습니다. 리턴은 int형만 가능하고 일반적으로 프로시저에 대한 응답(로그인 중이라면 로그인이 안 된 이유 같은 것들)용으로 많이 사용합니다. 셀랙트는 말 그대로 데이터(테이블)를 리턴하는 것이고요. 1. SQL 작성 리턴과 셀랙트를 구분 안 하는 경우도 있습니다만 구분해서 쓰면 처리하기도 편해지고 코드도 일관성 있어저서 좋습니다. --Return과 Select를 구분한 경우 Select 1 Return 2 --결과 --Select : 1 --Return : 2 --Return과 Select를 구분하지 않은 경우 Select 1 Return --결과 --Select : 1 --Return : null 일반..
mvvm패턴 샘플을 인터넷에서 찾아 만드는데 'ICommand'를 상속하여 오버라이드(재정의, ovrride)를 하려고 하니 다음과 같은 에러 메시지가 나옵니다. 재정의할 적절한 메서드를 찾을 수 없습니다(no suitable method found to override) 1. 오류의 원인 MSDN을 뒤져보니 "컴파일러 오류 CS0115"라는 것이 있군요. (참고 : MS Docs - 컴파일러 오류 CS0115 ) 설명의 뜻은 1) 베이스로 지정안되있는 녀석을 오버라이드를 시도했거나 2) 오버로드를 해야 하는 녀석(파라메타가 다르다던가 이름이 다르다던가) 해야 할 녀석을 오버라이드 했다 입니다. 2. 해결 방법 결국 해결법은 1. 올바른 베이스를 지정한다. 2. 'override' 키워드를 뺀다.(오버라..