프로젝트 속성이나 'AssemblyInfo.cs' 파일을 만지 다보면 볼 수 있는 오류입니다. 1. 원인 'AssemblyInfo'가 생성될 때 중복되는 항목이 있으면 발생합니다. 문제는 이것이 UI 만지다가 그럴 수도 있고 직접 수정하다가 그럴 수도 있다는 것이죠. 간단한 해결방법은 중복되는 항복을 제거하면 되는데........ 자동생성되면서 기존 것과 충돌 나는 거면....? 2. 해결 방법 간단한 해결방법은 'AssemblyInfo.cs'의 자동 생성을 막는 것입니다. 솔루션 탐색기 > 오른쪽 클릭 > 프로젝트 파일 편집 으로 들어가서 "*.csproj" 파일을 열어 줍니다. "false"를 추가해 줍니다. false 이제 빌드하면 오류가 사라집니다. 마무리 프로젝트 파일을 편집하는 건 할 때마다 ..
'.NET Core 3'에서 클래스 라이브러리(Class Library)를 사용할 때 사용할 수 있는 'ASP.NET Core MVC'의 버전은 3.1.0 버전입니다. *2020-08-10 기준 1. '.NET Core 2'에서는 어떻게 했는가?'.NET Core 2'에서는 'ASP.NET Core MVC'를 참조하려면 누겟에서 찾아서 설치해야 합니다. 그런데 업데이트가..... 쓰려면 쓸 수는 있는데 버전이 낮아서 생기는 문제들이 좀 있습니다. '.NET Core 3'에서도 사용하려면 사용 할 수 있습니다. 2. '.NET Core 3 MVC'는 어디 있는가?'.NET Core 3'에서는 프래임웍에 포함되어 있습니다. 그렇다는 건 그냥 참조하면 되는데.... 자동으로 참조가 되지 않습니다. 이게 프레임..
크로미움을 참조한 윈폼 프로젝트를 배포했더니 실행도 안 되고 에러 메시지도 없이 반응이 없습니다. 그래서 이벤트 뷰어를 봤더니.... 1. 에러 원인원래 'System.IO.FileNotFoundException'에러는 파일을 찾지 못한 경우 발생합니다.하지만..... 크로미움을 참조할 때 사용하는 'CefSharp'를 참조했는데 'VC++ 2013/2015 Redistributable Package'가 설치되지 않은 경우에도 발생합니다.(참고 : github CefSharp - Frequently asked questions ) 2. 해결방법너무나 당연하게도 'VC++ 2013/2015 Redistributable Package'를 설치하면 됩니다.다운로드 : Microsoft Visual C++ 20..
비트 연산을 하면 한 변수에 여러 옵션을 넣었다 뺐다 하는 효과를 줄 수 있습니다. 이 비트 연산을 열거형 맴버로 한다면 직관적으로 특정 옵션이 들어 있는지 확인하는 것이 가능하죠. 많은 언어가 열거형 맴버를 비트 연산에 활용할 수 있습니다. 닷넷(.Net)에서 어떻게 사용하는지 알아봅시다. 연관글 영역 1. 원리 이해하기 비트 연산의 원리를 간단하게 알아봅시다. 열거형 멤버의 비트 연산은 선언된 값의 합이 다른 멤버의 값과 절대로 겹치지 않는다는 것을 전제로 진행됩니다. (참고 : MSDN - 열거형 디자인) 아래와 같이 열거형 멤버를 선언합니다. /// /// 권한1 옵션 /// public enum Auth1Type { None = 0 , Opt0 = 1 , Opt1 = 2 , Opt2 = 4 , ..
DB를 먼저 작성하거나 다른 프로젝트에 의해 생성된 DB를 사용하는 경우 DB 퍼스트(DB First) 방식을 사용합니다. 연관글 영역 프로젝트는 'ASP.NET Core 2'로 구성되어 있습니다. 이 프로젝트는 sqlite를 기준으로 작성되었습니다. 1. 왜 DB 퍼스트를 사용하는가? 전통적으로 프로젝트가 진행되면 DB를 먼저 만들고 시작했습니다. 예정에는 여기에 직접 쿼리를 날리거나 DBA가 만들어놓은 프로시저를 호출해서 사용했죠. EF(Entity Framework)와 같은 ORM(Object-Relational Mapping) 프레임웍들이 생기면서 모델을 만들어 접근하는 방식을 사용하기 시작합니다. 그렇다면! 기존 방식을 사용하는 프로젝트는 EF를 어떻게 연결하느냐? 이미 만들어져있는 DB의 정보..
코드를 먼저 작성하고 이것을 기반으로 DB를 수정하는 것이 코드 퍼스트(Code First)입니다. 코드 퍼스트가 왜 필요하고 어떻게 사용하는지 알아봅시다. 프로젝트는 'ASP.NET Core 2'로 구성되어 있습니다. 연관글 영역 1. 왜 코드 퍼스트가 필요한가? 전통적인 프로젝트-DB 관계는 DBA가 DB를 만들고 거기에 맞춰 프로그램을 만드는 형태였습니다. 그런데 장비의 가격은 낮아지고 사양은 높아지면서 점점 DB의 성능 이슈를 돈으로 때워도 큰 부담이 안 되는 시대가오게 됩니다! 그러니 프로그래머들이 임시로 DBA를 겸해서 작업하다가 성능 이슈가 발생하는 부분만(혹은 프로젝트가 시작 할 때나 끝날 때쯤) DBA가 붙어서 최적화시키는 프로세스가 정착되었습니다. DB에 맞춰 프로그램을 만들게 되면 문..
C# 클래스(Class)나 모델(Model)을 Json파일로 저장했다가 다시 불러서 모델에 바인딩하기는 쉽습니다. 한단계씩 따라 해 봅시다. 1. 준비 누겟(Nuget)에서 'Newtonsoft.Json'를 찾아 설치해 줍니다. 'TestData001.cs' 클래스를 생성합니다. /// /// 테스트용 모델1 /// public class TestData001 { public string StrData1 { get; set; } public string StrData2 { get; set; } public int IntData1 { get; set; } public int IntData2 { get; set; } } 'TestData002.cs' 클래스를 생성합니다. public enum Test1Typ..
저는 자마린 프로젝트에서 발생했지만 기존 프로젝트에 닷넷 스탠다드(.NET Standard)로 프로젝트를 만들면 발생할 수 있는 오류가 아닌가 생각됩니다. 1. 오류 발생 자마린 프로젝트에서 PCL이 닷넷 스탠다드(.NET Standard)로 표준화되었습니다. 그래서 기존에 만들었던 PCL을 닷넷 스탠다드로 바꾸는 작업을 하고 있는데...... 'EmbeddedResource' 중복 항목이 포함되었습니다. .NET SDK에는 기본적으로 프로젝트 디렉터리의 'EmbeddedResource' 항목이 포함됩니다. 프로젝트 파일에서 이러한 항목을 제거하거나, 프로젝트 파일에 해당 항목을 명시적으로 포함하려면 'EnableDefaultEmbeddedResourceItems' 속성을 'false'(으)로 설정할 수..
트라이~캐치(try~catch)는 런타임에서 오류를 잡아내는 좋은 방법의 하나 입니다. 문제는 디버그할 때는 오류 위치가 잡히지 않기 때문에 오류 추적이 힘들다는 문제가 있죠. 1. 트라이 캐치도 조건문을 사용할 수 있다. 캐치(catch)에 조건을 줘서 원하는 조건에 중단 점이 동작하도록 할 수 있습니다. 캐치문 뒤에 웬(when)문을 붙여 사용할 수 있습니다. (참고 : Microsoft docs - try-catch(C# 참조) ) catch (ArgumentException e) when (e.ParamName == "…") { } 이런 식으로 말이죠. 2. 활용하기 간단하게 예제를 만들어 봅시다. 버튼을 몇 개 만들고 시작 버튼을 하나 만듭니다. 버튼들은 변수의 상태를 바꿔주는 기능을 넣고 시작..
.NET에서 오류를 캐치하기 위한 방법으로 'Debug.Assert'과 'throw Exception' 이렇게 두 가지가 있습니다. 이 두가지의 차이와 활용방법을 알아봅시다. 1. Debug.Assert 'Debug.Assert'는 조건이 펄스(false)일 때 동작하는 메소드 입니다. 이 동작이 중요한데 'Debug.Assert'의 용도는 '확인'에 있으므로 거짓일 때 동작한다고 생각하면 됩니다. 'Debug.Assert'가 동작하면 메시지 상자가 표시됩니다. Debug.Assert([비교값], "[출력할 메시지]"); 'Trace.Assert'도 같은 동작을 합니다. 디버그는 디버그 모드에서만 동작하고 트레이스는 모두 동작합니다. (참고 : 디버그(Debug) 클래스와 트레이스(Trace) 클래스) ..