본문 바로가기
반응형

.NET29

.NET - EXE에 모든 Dll, 리소스 포함하여 빌드하기 C# 프로그램을 개발한다면, 누구나 느끼는 Nuget에서 받은 DLL과 리소스들을 합쳐서 깔끔하게 배포하고 싶은 욕구가 있을 것이다. 아래에는 저자가 기존부터 경험했던 리소스를 EXE에 포함하여 배포하는 방법 3가지를 공유해보도록 하겠다. 1. 리소스에서 파일 생성하기 예전에는 DLL과, 리소스 파일들을 포함하기 위해서는 리소스 파일을 만들어서 실행 하는 시점에 해당 파일이 있는지 확인하고, 로드하는 방식을 사용하였다. 아래는 저자가 특정 파일을 리소스에 포함했다가 프로그램 실행시점에 해당 파일이 있는지 확인하여 리소스에서 파일 쓰는 방식이다. 이 방식은 Update.exe와 같은 추가 기능을 EXE 파일에 넣었다가 필요시 리소스에서 꺼내어 사용할 수 있는 방식으로도 활용이 가능하다, 다만 특정 백신에서.. 2024. 2. 24.
.NET/MVC - 기존 프로젝트에 WEB API 추가하기 .Net MVC를 개발하다보면, 프로젝트 초기에는 필요 없던 RestFul을 통한 Web API 기능이 필요할 때가 있다. 여기에서는 기존 MVC 프로젝트에 Web API를 추가하는 방법을 알아보고자 한다. 1. Web API 컨트롤러 추가 먼저 Web API를 추가해보자. 기본 템플릿에서 제공하는 Web API를 추가하면 기본적으로 Get, Post 등의 평션이 생성되어 바로 테스트에 사용할 수 있다. 여기서 주의할 점은 Colltroller 앞에 나오는 이름이 실행하는 REST API 네이밍 구분자가 된다는 것이니 기능에 알맞은 이름을 주면 된다. 여기에서는 Test로 주었다.(대소문자 구분 X) 추가 이후 실행해 보면, 정상적으로 동작을 하지 않는다. 이유는 Web API의 Route 경로를 추가해.. 2024. 2. 24.
C#/.NET - DateTime 문자열 포맷 전체 아래 글에 세부적으로 잘 정리되어 있는데, 시간 값을 표현하는 방식을 하도 자주 사용하다보니, 예제를 갈무리 해봤다. DateTime.Now.ToString("MM/dd/yyyy") 05/29/2015 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 05:50 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 05:50 AM DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 5:50 DateTime... 2024. 2. 23.
.NET/MVC - LINQ Compare DateTime MVC를 이용할 경우 LINQ 를 이용해서 Database를 조작 하게된다. 일반적으로 조건 쿼리는 Whare 절에 => 구분을 통해 식별하고자 하는 컬럼을 가상화하여 비교하거나 조건을 걸 수 있다. var data = dbModel.db.Where(p => p.id == item.id).ToList(); 그런데 DateTime 같은 경우 다음과 같이 사용하게 되면, 코드상에서는 문제가 없지만 실제 구동시 오류가 발생한다. var data = dbModel.db.Where(p => p.date >= DateTime.UtcNow.AddDays(-30)).ToList(); 위 코드의 오류 내용을 보면, DateTime을 LINQ 안에 직접 선언해서 발생하는 문제로 보인다. System.NotSupported.. 2024. 2. 23.
MVC - MYSQL, 최대 길이가 ‘250’인 문자열 또는 배열 형식이어야 합니다. .NET MVC에서 MYSQL을 연결하여 데이터베이스에 기록을 하다보면, 다음과 같은 오류를 만날 수 있습니다. Message “하나 이상의 엔터티에 대해 유효성을 검사하지 못했습니다. 자세한 내용은 ‘EntityValidationErrors’ 속성을 참조하십시오.” Exception 위 오류를 확인 하였을 때 보통 MYSQL의 제한에 의해 발생하는 오류로 아래 경로를 따라 들어가면 확인 할 수 있습니다. ex → EntityValidationErrors → ValidationErrors → [0] → ErrorMessage 여기에서 오늘 특이하게 경험한 오류코드는 다음과 같습니다. ErrorMessage “필드 xxx(는) 최대 길이가 ‘250’인 문자열 또는 배열 형식이어야 합니다.” 위 오류코드는 .. 2024. 2. 20.
.NET - HtmlAgilityPack SelectNodes에서 다중 클래스 찾기 contains 요즘 HTML 을 가지고 자동화를 하고자 한다면, HtmlAgilityPack이 .Net에서는 많이 사용된다. 클래스를 찾는 방법으로, 단순한 구조의 html이라면 괜찮지만 조금 복잡하게 여러개의 class가 선언 된 경우 효과적으로 사용할 수 있는 contains에 대해 짧게 정리해 본다. 먼저 HtmlAgilityPack 에서 노드를 찾는 기능은, SelectNodes로 가능하다. SelectNodes 그리고 기본적으로 검색 방법은 Xpath 방식을 이용하는데, 앞서 구분자 a, div 등 꺽쇠를 제외한 구분자와 내부 검색하고자 하는 Key와 Value를 지정해주면 된다. 기본적으로 아래와 같은 조건으로 사용할 수 있다. # body가 들어간 노드 찾기 var body = html.DocumentNo.. 2022. 11. 11.
.NET - MySqlCommand'Character set 'utf8mb3' is not supported by .Net Framework.' 오류 해결 오랫만에 .NET 코드를 사용하니 아래와 같은 오류가 발생한다. 'Character set 'utf8mb3' is not supported by .Net Framework.' 이 문제는 utf8을 현재 라이브러리에서 지원하지 않기 때문에 발생한다. 라이브러리 Update를 통해 해결하는 방법이 정석이겠지만, 가장 쉬운 방법은 Database에서 utf16_general_ci로 변경하는 것이다. MySQLCommand 구분에 다음 명령으로 Character Set을 변경할 수 있다. "SET character_set_results=utf8 "을 통해 utf8으로 문자열을 설정하도록 하자. (1회만 진행하면 유지된다.) MySqlCommand cmd = new MySqlCommand("SET characte.. 2022. 11. 11.
.NET - MAUI 6.0 서비스 배포 22년10월11일 업데이트인 Visual Studio 2022 version 17.3.6 버전 에 MAUI 6.0 버전이 배포되었다. .NET MAUI 6.0는 멀티 플랫폼을 지원하는 언어로, 안드로이드, 아이폰, 윈도우, Mac 에서 동작이 가능한 단일 프로젝트를 만들 수 있다. 마이크로소프트는 멀티 플랫폼을 지원하기 위해서 다년간 OS부터 프로그램 언어까지 노력을 아끼지 않았는데, MAUI가 오랜 시간 동안 준비한 만큼 어떤 기능을 개발할 수 있을 지 기대된다. .NET MAUI 6.0을 사용하기 위해서는 먼저 업데이트를 진행해야 한다. 이후 기능 추가를 통해서 .NET MAUI 6.0 기능을 추가하면 탬플릿에서 MAUI 템플릿을 통한 개발을 진행할 수 있다. 에뮬레이터를 통해 다른 플랫폼에서 동작하.. 2022. 10. 14.
C#/.NET - 프로젝트 생성과 빌드하기 + 디버깅 처음 프로그램을 다루는 사람이라면, 어떻게 저 코드를 실행할 수 있을까 하고 고민이 될 수도 있다. 한번 해보면 크게 어려운 것이 아니므로 아래와 같이 따라 해 보도록 하자(C#외에 C++도 이와 같이 프로젝트를 생성하고 빌드하면 된다). 먼저 설치한 Microsoft Visual Studio를 실행하고 새 프로젝트 만들기(Ctrl+Shift+N키)를 누르자. 그럼 아래와 같이 생성할 수 있는 프로젝트가 나타난다. 보통 윈도우 GUI(그래픽 유저 인터페이스) 기반의 프로그램인 Windows Forms 응용프로그램과 CLI 기반의 콘솔 응용 프로그램을 많이 사용하는데, 여기서는 콘솔 기반 응용프로그램이 다수이므로, “콘솔 응용 프로그램”을 선택하고 아래 확인 버튼을 누르자(프로젝트 이름은 적당히 지정한다... 2022. 6. 11.
반응형