분류 전체보기
-
[EF Core] 여러 프로젝트가 참조된 솔루션에서 dotnet ef 명령어 사용시 유의사항정리.NET/개념 및 유용한 팁 2021. 8. 31. 22:22
CleanArchitecture까진 필요없고, 단일 프로젝트 형식은 테스트 케이스 개발에 불편함이 있어 별도 프로젝트 템플릿을 구현하고 있다. 구현하면서 Entity Framework Core를 이용해 Code First 방식으로 DB를 마이그레이션 하는 방법을 다루게 되었는데 뻘짓을 많이 하여 리스트로 정리할겸 포스트를 쓴다. 1. 시작프로젝트에 Microsoft.EntityFrameworkCore.Tools Nuget 패키지가 설치되어 있어야 한다. 설치가 안되어있을 경우, 아래와 같은 오류가 나온다. Your startup project 'Template.WebApi' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is r..
-
[Viusal Studio] xUnit 간편하게 사용할 수 있는 확장 xUnit.net.TestGenerator.NET/개발환경 및 Tools 2021. 8. 22. 14:49
xUnit 도 MSTest 처럼 컨텍스트 메뉴에서 테스트 프로젝트를 자동생성하려면 xUnit.net.TestGenerator를 설치해야 한다. https://marketplace.visualstudio.com/items?itemName=YowkoTsai.xUnitnetTestGenerator xUnit.net.TestGenerator - Visual Studio Marketplace Extension for Visual Studio - xUnit.net Test Generator extensions for Visual Studio 2017 and Visual Studio 2019. Creates Unit tests with xUnit.net 2.0 framework. Works on Visual Stud..
-
[.NET] Dependency Injection(DI)를 쓰는 이유.NET/개념 및 유용한 팁 2021. 8. 7. 12:46
ASP.NET Core는 기본적으로 DI가 적용된 구조로 생성된다. 그런데 왜 DI 가 적용되어있을까? 인터넷에서 보면 다음과 같은 이유로 DI가 좋다고 되어있다. 코드의 재사용성을 높인다. 결합도를 낮춘다. 여러 블로그글을 보면 위 내용들이 많다. 그런데 왜 재사용성이 높아지고, 결합도가 낮아지는 건지 와닿진 않는다. 그리고 굳이 DI를 써야하나라는 의구심이 들기도 한다. 솔직히 필자도 DI 가 좋은 이유에 대해 제대로 설명해보라고하면 못할 듯 싶다. 그래서 아래 간단한 실습을 통해 DI가 어떻게 동작하며, 왜 좋은지 포스트로 남겨보고자 한다. 1. 프로젝트 생성 "WhyUseDI" 라는 이름의 솔루션을 생성하고, "WhyUseDI.API" webapi 와 "Services" classlib 프로젝트를..
-
[ASP.NET Core] AddController(), AddMvc(), AddControllersWithViews(), AddRazorPages() 차이점.NET/ASP.NET Core 2021. 6. 26. 11:33
ASP.NET Core에서 MVC 템플릿으로 프로젝트를 생성하면 Startup 클래스의 ConfigureServices 메소드에서AddControllersWithViews()를 확인할 수 있다. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } 함수 이름으로 유추해봐도 알 수 있듯이, MVC 모델의 Controller와 View를 ASP.NET Core에서 사용하겠다는 뜻을 의미한다. 그런데 AddControllersWithViews 가 아닌, AddMVC를 사용해도 문제없이 동작하는 것을 확인할 수 있다. 이 메소드들은 공통적으로 MvcServiceCollectionExtens..
-
[AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 6. Certbot을 통한 인증서 업데이트서버 관리/AWS & Lightsail 2021. 6. 17. 13:43
웹서비스를 만들고 https 적용하는 뻘짓을한지 어느덧 3개월이 흘렀다. 인증서업데이트일자가 다가왔다. 이번시간엔 수동으로 직접 인증서를 업데이트하는 시간을 가져보겠다. 0. (사전작업) 0.1 새 액세스키 생성 지난시간에 생성한 액세스키(AWS_ACCESS_KEY)와 액세스 비밀키(AWS_SECRET_ACCESS_KEY)를 잘 보관했다면 건너뛰어도 무방합니다. AWS 콘솔페이지에서 상단 계정 메뉴에 [내 보안 자격 증명] -> [사용자] 메뉴로 들어간다. [액세스 키 만들기]를 눌러 새로 생성한 액세스키 csv 파일을 받는다. 0.2 certificates 파일 편집 콘솔에서 sudo su 명령어를 입력하여 root 계정 콘솔로 전환 후, ~/.aws/certificates 파일을 편집한다. 1. ro..
-
[.NET Tools] 웹 기반 dotnet playground 서비스 sharplab.io.NET/유용한 라이브러리 2021. 6. 5. 19:05
https://sharplab.io/ SharpLab Code [connection lost, reconnecting…] sharplab.io 웹에서 .NET 기반 소스코드를 작성하고 결과를 바로바로 확인할 수 있는 웹 서비스이다. 코드를 작성하여 단순 결과를 보는 것 뿐만 아니라 Debug, Release시 최적화되는 소스코드 및 중간언어(IL)로 변환되었을때 어떻게 되는지 확인할 수 있다. 기존에 Visual Studio 에선 해당 소스코드가 boxing과 같이 성능저하 문제가 발생할만한 요소가 있는지 확인하기위해 visual studio 와 함께 설치되는 Ildasm.exe 도구를 써서 확인해야하는 수고로움이 있었다. SharpLab에선 바로바로 확인이 가능하다. 코드를 작성하면 URL에 파라메터가..
-
[.NET] IEnumable에 대한 성능팁.NET/개념 및 유용한 팁 2021. 6. 5. 16:31
매일 수신받는 medium 에서 IEnumable에 대한 유용한 글을 수신받았다. 번역기가 있어 어느정도 이해할 순 있지만 내용이 좀 길어 짧게 정리할 겸 포스트를 쓴다. 1. Count() != 0 보단 Any()를 써라 종종 배열(IEnumable)에 요소가 있는지 여부를 사용할 때, Count() != 0 조건을 사용하는 경우가 많다. 그러나 Count()는 각 요소의 개수를 구하기 위해 아래와 같은 구현으로 동작한다. public static int Count(this IEnumerable enumerable) { var count = 0; using(var enumerator = enumerable.GetEnumerator()) { while (enumerator.MoveNext()) count..