.NET

.NET

    [.NET] 닷넷 Type 사용하기 - 8. image 다루기

    9. image 다루기 .NET Framework에서 Image를 다루기 위한 것으로 System.Drawing.Image를 사용할 수 있었습니다. 그러나 .NET Core 1.0이 개발되기 시작한 후부터는 더 이상 System.Drawing.Image를 사용할 수 없게 되었고 마이크로소프트는 System.Drawing은 더이상 지원되지 않을 것이며 비 크로스 플랫폼에 해당하므로 사용하지 말 것을 권고하고 있습니다. 대신 이를 대체할 수 있는 다른 대안으로 ImageSharp이나 SkiaSharp을 사용할 수 있습니다. 여기서는 이 중에서 ImageSharp을 사용해 Image를 다루는 방법에 간단히 알아보고자 합니다. ImageSharp은 2D graphics을 위한 third-party cross-p..

    [.NET] 닷넷 - 5. .NET Framework에서 .NET으로의 전환

    6. .NET Framework에서 .NET으로의 전환 기존에 존재하는 .NET Framework App을 새로운 .NET 버전으로 전환하는 것은 선택의 문제입니다. 예를 들어 비교적 적은 방문자를 유지하고 있는 .NET Framework의 Web 서비스의 경우 현재 상태로 아무런 문제가 없다면 굳이 전환이 필요하지 않을 수 있지만 Windows Server에서의 비용 문제로 인해 Linux Server로 서버를 이전하고자 하는 경우라면 전환에 필요한 비용이 많지 않다면 오히려 전환이 이득이 될 수 있습니다. ● 전환 가능한 Application의 유형 .NET은 Windows, Linux, MacOS등에서 실행이 가능한 것으로 아래 유형을 지원하고 있습니다. 기존의 Application이 Windows..

    [.NET] 닷넷 - 4. Decompiling

    5. Decompiling .NET은 IL이라고 하는 중간 언어를 거치를 방식으로 컴파일이 진행됩니다. 이런 원리를 통해 IL을 다시 본래 소스코드로 되돌려 볼 수 있는데 이를 '디컴파일'이라고 합니다. 디컴파일을 위해서는 여러 가지 도구를 사용할 수 있는데 마이크로소프트에서 공식적으로 이를 위해 내놓은 도구로 'ILSpy'라는 것이 있습니다. 이 도구는 Visual Studio (2022)에서 확장 기능으로 설치해 사용할 수 있습니다. Visual Studio를 실행해 'Manage Extension'안에서 ILSPY를 검색하고 해당 확장 기능을 설치합니다. Visual Studio를 종료하고 설치를 마무리합니다. Visual Studio를 다시 실행하고 'Tool -> ILSpy'를 선택하여 실행한 ..

    [.NET] 닷넷 - 3. 배포하기

    3. App 배포하기 다른 개발자를 위해 Class Library를 만들거나 일반적인 사용자를 위한 App을 만들게 되는 경우 이를 사용 가능하도록 하려면 배포하는 과정이 필요하며 배포하는 방식은 다음과 같이 크게 2가지가 있습니다. Self-contained Framework-dependent Framework-dependent는 배포해야 하는 파일 집합의 크기가 매우 간소해지지만 시스템이 .NET이 반드시 설치되어 있어야 합니다. 반면 Self-contained는 수많은 파일들이 함께 배포가 되는 경우이므로 아주 간단한 Console App정도라 하더라도 매우 많은 수의 파일이 동반될 수 있고 그에 따라 배포되어야 하는 용량도 매우 커질 수 있습니다. 하지만 Self-contained는 .NET의 설..

    [C#] C#과 .NET6 시작하기 - 3. Console App 만들어 보기

    3. Console App 만들어 보기 (Visual Studio 2022) 지금부터 만들어볼 환경은 Windows상에서 Visual Studio 2022를 사용하는 것으로 간단한 Console App을 만드는 과정을 담고 있습니다. Visual Studio 2022는 설루션(Solution)이라고 하는 다수의 Project를 관리할 수 있는 개념을 가지고 있으므로 Project를 생성하면 자동으로 하나의 설루션 안에 Project를 담아두는 구조로 생성될 것입니다. Visual Studio 2022를 실행하여 처음 나오는 Create a new project화면에서 C#언어의 Console App template을 선택합니다. Project설정 화면에서 Project name을 설정합니다. 프로젝트가 ..

    [C#] C#과 .NET6 시작하기 - 2. .NET 이해하기

    2. .NET .NET과 연관되는 .NET 6, .NET Core, .NET Framework, Xamarin 등은 서로 밀접하게 연관되어 있으며 어느 부분에서는 서로 간에 중복성을 가지기도 합니다. 이들 연관성이나 각각의 특징에 관해 알아보려면 각각에 대한 개별적인 콘셉트를 이해할 필요가 있습니다. ● .NET Framework .NET Framework는 CLR(Common Language Runtime)을 포함하는 하나의 개발 플랫폼으로서 코드의 실행을 관리하고 Application 개발에 필요한 여러 가지 클래스 라이브러리를 제공하기도 합니다. 마이크로소프트는 원래 .NET Framework를 Cross-platform으로 설계하기를 시도했으나 결과적으로 윈도 전용이 되었으며 4.5.2버전 부터는..

    .NET과 C# 시작하기

    1. 개발환경 Programming을 하려면 그에 맞는 개발환경이 갖추어져 있어야 할 것입니다. 이를 위해 Microsoft에서는 다음과 같은 Code편집기와 IDE(integrated Development Environments)를 제공하고 있습니다. Visual Studio Code GitHub Codespaces Visual Studio 2019 또는 Visual Studio 2019 for Mac ● Vsual Studio Code 가벼우면서도 최신의 개발환경을 지원하는 Code편집기로는 Visual Studio Code가 있으며 Windows, MacOS나 Red Hat/Ubuntu와 같은 Linux등 다양한 운영체제를 지원하기도 합니다. Visual Studio Code는 기본기능 이외에 다양..

    [.NET] 가비지 컬렉션(Garbage Collection)

    1. 가비지 컬렉션의 개요 가비지 컬렉션은 메모리 수거를 의미하며 .NET CLR의 가비지 컬렉터가 가비지 컬렉션을 수행하여 메모리를 관리합니다. C나 C++에서는 객체를 위한 메모리 공간을 확보하고 객체를 할당한 후에 해당 객체의 작업이 종료되면 할당했던 메모리의 힙을 가리키는 포인터를 통해 메모리를 해제하는 작업을 직접 구현해야 합니다. 문제는 이 과정에서 메모리 해제를 제대로 해주지 않으면 메모리가 낭비되는 결과를 초래하게 된다는 것입니다. C/C++런타임이 객체를 메모리에 할당하는 과정을 보면 일단 여러 개의 블록으로 나누어진 메모리를 링크드 리스트로 연결해 관리하는데 만약 객체를 할당해야 하는 순간이 오면 해당 객체를 할당할만한 적당한 메모리 블록을 찾은 뒤 해당 블록을 다시 객체에 맞게 나누어..