닷넷 5 이후 버전(기억이 맞나....) 부터는 버전 관리 인터페이스가 바뀌었습니다. 간단하게 '버전 자동 증가' 설정 방법을 다루고 이 정보를 시간으로 치환해보겠습니다. 연관글 영역 1. '버전 자동 증가' 설정하기 이전 버전에서는 프로젝트를 생성하면 'AssemblyInfo.cs'파일이 생성되고 빌드할 때 합쳐졌습니다. 이제는 프로젝트 파일(.csproj)에 정보가 기록되어 있다가 빌드할 때 'AssemblyInfo.cs'파일이 생성됩니다. 그래서 직접 'AssemblyInfo.cs'를 수정하면 안 됩니다. 1-1. 버전에 와일드카드(wildcard) 사용하기 예전 포스팅에서도 다뤘던 내용입니다. (참고 : [.NET] 버전 자동 증가(변경) 기능 켜기 ) 버전 정보에 와일드카드를 사용할 수 있습니다..
소켓 통신 라이브러리를 만들어 사용하는 중인데 '.NET' 응용프로그램에서는 문제가 없는데 유니티에서는 문자열이 깨지는 현상이 발생했습니다....???? 1. 문제의 발견 서버에서는 문자열을 아스키 배열로 보내고 있습니다. .NET 프로그램에서는 아스키를 문자열로 바꿀 때 다음과 같은 방법을 사용합니다. Encoding.Default.GetString(byteData); -- 혹은 -- Encoding.ASCII.GetString(byteData); 그런데 유니티에서는 이렇게 하면 한글 아스키가 디코딩되지 않는 현상이 있습니다. 재연하기 재연용 코드는 다음과 같습니다. //byte[] ascii = System.Text.ASCIIEncoding.Default.GetBytes("가나다라"); byte[] ..
당연히 참(true)입니다만..... 왜 이 당연한 질문을 하는 걸까요? 인터넷을 돌아다니다 보면 빈문자열("")대신 'string.Empty'라는 녀석을 쓰라는 말을 많이 볼 수 있습니다. 이 질문의 답을 이해하려면 .NET에서 문자열이 어떻게 살아가고 있는지 알아야 합니다. 1. 문자열의 구현 대부분의 언어가 'string'형을 구현할 때 내부에서는 'char'배열로 구현합니다. 그래서 아래와 같이 배열로 접근 가능하죠. (언어마다 접근방법이 다를 수 있습니다.) 문자열은 참조 형식 변수? 값 형식 변수? 변수의 형식에는 크게 2가지 가 있습니다. - 참조 형식 (참고 : MS Docs - 값 형식(C# 참조) ) 그때그때 메모리에 할당되고 값을 전달할 때는 복사되어 원본이 보존됩니다. - 값 형식 ..
이전 포스팅에서 미리 구성된 프론트엔드 템플릿(create react app)을 이용하여 비주얼 스튜디오의 디버거에 연결하는 작업을 했습니다. 이제 직접 웹팩을 구성하여 비주얼 스튜디오의 디버거에 연결하는 작업을 해보겠습니다. 연관글 영역 1. 'SpaProxy' 설치 및 설정 이 부분은 이전 포스팅의 '1. 'SpaProxy' 설치 및 설정'의 부분과 동일합니다. 참고 : [ASP.NET Core 6] 비주얼 스튜디오에서 'NPM' 프로젝트 디버깅 - 프론트 엔드(Front-end) 템플릿 사용 2. 웹팩 구성하기 모든 파일을 수작업으로 작성합니다. 인터넷에서 구할 수 있는 간단한 샘플을 만들어 넣을 예정입니다. (참고 : 웹팩 핸드북 - 웹팩 데브 서버) 2-1. 'node'용 폴더 생성 프로젝트 루..
비주얼 스튜디오에서는 자바스크립트(javascript)를 비롯한 타입스크립트(typescript) 같은 프론트엔드 소스 파일들도 중단점(breakpoint)과 같은 디버깅 기능을 이용하여 디버깅할 수 있습니다. 1. 문제의 시작 문제는 웹팩(webpack)과 같은 빌더(혹은 번들러)를 사용하면 디버깅이 안되는 경우가 있다는 겁니다. 비주얼 스튜디오의 고질적인 오류인 중단점이 적중하지 않는 문제와 뒤섞인 것지 아닌지도 알 수가 없죠. 보통은 소스 맵이 생성되지 않아서 그러는 경우가 많은데.... 확인해보면 소스 맵도 정상적으로 생성돼있는데 이런 현상이 발생합니다. (참고 : [Webpack] 소스 맵(Source Map)이 제대로 생성된 건지 확인하는 방법 ) 이 포스팅에서는 웹팩을 사용하면 디버깅이 안되..
프론트엔드 디버깅을 위해 소스 맵(Source Map)이 필요한 경우가 있습니다. 1. 소스 맵 확인하기 크롬 브라우저 기준으로 개발자 모드 > 소스 > webpack:// 소스 맵이 제대로 생성됐다면 여기에 원본 파일들을 볼 수 있습니다. (설정에 따라서 'webpack://'부분이 다를 수 있습니다.) 2. 웹팩에서 소스 맵 생성 설정 웹팩에서 소스 맵을 생성하려면 'webpack.config.js'에서 'devtool' 옵션을 소스 맵을 생성하는 옵션으로 지정합니다. (참고 : webpack.kr - Devtool ) 만약 'devtool' 옵션을 설정했는데도 소스 맵이 생성되지 않는다면 아래와 같이 플러그인을 추가해 줍니다. const webpack = require('webpack'); ... ..
백엔드와 프론트엔드를 같이 디버깅하려면 백엔드 따로 프론트엔드 따로 실행 해야 합니다. 이전 포스팅에서는 디버깅을 포기하고 자동화를 했었습니다. (참고 : [ASP.NET Core 6] 비주얼 스튜디오 + React 5 (1/3) - 개요 및 프로젝트 생성 ) 이번 포스팅에서는 - 'SpaProxy'를 이용하여 백엔드를 실행한 후 npm을 실행 시키고 - 비주얼 스튜디오의 디버거에 연결하고 - 자바스크립트(javascript)를 비롯한 'NPM' 프로젝트를 디버깅을 할 수 있도록 하겠습니다. 연관글 영역 0. 문제의 시작 이것저것 다 귀찮으면 프론트엔드 출력물만 가지고 'ASP.NET Core 6'에서 웹서버 돌려서 해도 되긴 합니다. 소스맵만 잘 구성과 크로스 도메인(Cross Domain, CORS ..
닷넷에서 응용프로그램을 종료할 때 사용하는 명령은 크게 3가지입니다. Application.Exit() Environment.Exit(0) System.Diagnostics.Process.GetCurrentProcess().Kill(); 이 포스팅에서는 이 3가지의 차이점을 알아봅니다. 샘플을 실행해보고 보면서 확인하면 더 이해하기 쉽습니다. 샘플 : github - dang-gun/DotNetSamples/ExitTest/ 연관글 영역 1. Application.Exit() 내부에 종료를 알리고 모든 메소드가 끝나면 종료됩니다. 참고 : MS Docs - Application.Exit 메서드 설명이 복잡하지만..... 간단하게 말하면 애플리케이션에 정상종료를 요청한다는 의미입니다. 그래서 모든 종료 관..
'throw'로 예외처를 할 때 'throw'와 'throw ex'가 있습니다. 특수한 경우가 아니라면 'throw ex'를 쓸 일이 없으므로 크게 중요한 내용은 아니지만, 알아두면 좋지 않겠습니까? ㅎㅎㅎ 1. 'throw' 와 'throw ex'의 차이 이 두 개의 차이는 'try~catch'가 중첩 되었을 때 즉, 에러처리를 중첩했을때 표시되는 위치가 차이 납니다. 'throw'는 여러 개가 중첩되더라고 실제 에러 난 위치부터 표시되고 'throw ex'는 'throw ex'를 호출한 위치부터 표시가 됩니다. 2. 테스트해 보기 다양한 테스트 코드가 인터넷에 많습니다. 제가 사용한 코드는 아래와 같습니다. 참고 : stackoberflow - Is there a difference between "..
'npm'을 사용하면서 경고에 신경 쓰는 게 웃기기 합니다만.... 그래도 중간중간 확인하면서 경고도 제거하는 것이 미래의 문제를 미연에 방지할 수 있습니다. 1. 문제의 발견 'postcss-loader'와 'mini-css-extract-plugin'를 사용하는 프로젝트에서 웹팩 빌드하면 다음과 같은 경고가 나오는 경우가 있습니다. WARNING in ./src/sass/index.scss 22:17-24 export 'default' (imported as 'content') was not found in '!!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../..