상세 컨텐츠

본문 제목

[.NET] .NET 시작하기

.NET

by 클리엘 클리엘 2021. 11. 23. 02:13

본문

728x90

1. 개발환경 갖추기

 

Microsoft는 Programming을 위한 아래 개발환경을 제공하고 있으며 원하는 editor나 tool을 사용할 수 있습니다.

  • Visual Studio 2022 for Windows
  • Visual Studio 2022 for Mac
  • Visual Studio Code for Windows, Mac, Linux 등
  • GitHub Codespaces

이 외에도 JetBrains사의 Rider와 같은 C# 편집기도 존재합니다.

 

몇가지 선택가능한 option이 존재하며 어떤걸 선택하더라도 큰 문제는 없지만 극히 일부의 Project나 Application Type을 제외하고는 사실상 Visual Studio Code만으로도 C#언어를 시작하기에 충분합니다.

 

● Visual Studio Code

 

Visual Studio Code는 Windows, MacOS, Linux등 운영체제를 가리지 않고 설치/실행할 수 있으며, 가볍고 생산성이 뛰어난 code편집기입니다. C#뿐만이 아니라 다른 수많은 언어와 확장기능을 제공하는 Microsoft의 유일한 cross-platform 편집기라 할 수 있습니다.

 

뿐만 아니라 ARM까지도 지원이 가능하므로 Applie Silicon이나 Raspberry Pi와 같은 환경하에서도 무리없이 사용할 수 있습니다.

 

이와 관련한 자세한 사항은 아래 link를 참고하시기 바랍니다.

cs9dotnet5-extras/README.md at main · markjprice/cs9dotnet5-extras · GitHub

 

GitHub - markjprice/cs9dotnet5-extras: Slide decks for teachers using the book, supporting topics related to the book, and early

Slide decks for teachers using the book, supporting topics related to the book, and early drafts of topics for future editions. - GitHub - markjprice/cs9dotnet5-extras: Slide decks for teachers usi...

github.com

이런 특징으로 인해 수많은 개발자사이에서 가장 폭넓게 사용되는 편집기로 성장하고 있으며 실제 2021년 Stack Overflow 설문조사 결과 무려 70%이상의 개발자가 Visual Studio Code를 사용하고 있는 것으로 나타났습니다.

 

● Github Codespaces

 

Visual Studio Code의 Online판으로 Cloud기반의 Service입니다. Visual Studio Code와 완전히 동일한 사용환경을 제공하고 있으며 Git repos는 물론 다양한 확장기능과 command-line interface도 지원하는 service입니다. online기반이므로  Webbrowser와 Internet환경만 갖추고 있으면 어디서든 접근하여 code를 수정/test하고 실행해 볼 수 있습니다.

 

● Visual Studio for Mac

 

Mac사용자라면 Visual Studio Code뿐 아니라 Visual Studio 2022 for Mac을 사용할 수도 있습니다. 이를 이용하면 Console app이나 Website, Webservice 그리고 일반적인 desktop이나 mobile용 app개발까지도 가능합니다.

 

하지만 iPhone, iPad와 같은 iOS 운영체제에서의 정확한 실행확인을 위해서는 여전히 Xcode가 필요합니다.

 

● Visual Studio for Windows

 

Windows 사용자라면 Visual Studio 2022라는 통합개발환경(IDE)를 선택할 수도 있습니다. 이 경우에도 Console app은 물론 Web, desktop, mobile등 거의 대부분 환경에서의 app개발이 가능합니다. 다만 Xamarin을 통해서 crosss-platform mobile app을 만든 경우라 하더라도 compile을 위해 MacOS에서는 Xcode가 필요할 수 있습니다.

 

Visual Studio 2022는 기본적으로 Windows 7(SP1)에서도 동작할 수 있지만 UWP(Universal Windows Platform) app개발을 위해서는 Windows 10/11을 사용해야 합니다.

 

● 배포

 

개발환경이나 사용된 tool이 어떻게 되는지와는 무관하게 compile된 결과물은 Windows나 Mac, Linux등 다양한 운영체제상에서 실행될 수 있습니다. 참고로 .NET6가 지원하는 운영체제는 다음과 같습니다.

  • Windows : Windows 7 SP1 또는 이후, Windows 10 1607 또는 이후, Windows 11, Windows Server 2012 R2 SP1 또는 이후, Nano Server 1809 또는 이후
  • Mac : Movave(10.14) 또는 이후
  • Linux : Alpine Linux 3.13 또는 이후, CentOS 7 또는 이후, Debian 10 또는 이후, Fedora 32 또는 이후, openSUSE 15 또는 이후, Rad Hat Enterprise Linux (RHEL) 7 또는 이후, SUSE Enterprise Linux 12 SP2 또는 이후, Ubuntu 16.04 또는 이후
  • Androide : API 21 또는 이후
  • iOS : 10 또는 이후

● Visual Studio Code 내려받기 및 설치

 

내려받기 : Visual Studio Code - Code Editing. Redefined

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

설치guide : Setting up Visual Studio Code

 

Setting up Visual Studio Code

Get Visual Studio Code up and running.

code.visualstudio.com

.NET SDK : Download .NET (Linux, macOS, and Windows) (microsoft.com)

 

Download .NET (Linux, macOS, and Windows)

Free downloads for building and running .NET apps on Linux, macOS, and Windows. Runtimes, SDKs, and developer packs for .NET Framework, .NET, and ASP.NET.

dotnet.microsoft.com

Visual Studio Code를 설치한 후 충분한 개발환경을 갖추기 위해 아래 확장기능 또한 추가로 설치할것을 권장합니다.

  • C# Extension : 구문강조, intelliSense, 정의로이동, 참조찾기등과 debugging및 project file인 csproj등 C#에 관한 다양한 기능을 지원합니다.
  • .NET Interactive Notebook : 아래 별첨
  • ILSpy .NET Decompiler : .NET Assembly의 역컴파일 기능
  • GitHub Repositories : GitHub 소스관리 기능
  • SQL Server (mssql) for Visual Studio Code : Micorsoft SQL Server, Azure SQL Database등의 개발환경 지원

 .NET Interactive Notebooks

 

Visual Studio Code를 사용하기로 했다면 간단한 단위 test를 위해 .NET Interactive Notebooks를 사용해 볼 수 있습니다. 매우 간편한 방법으로 몇가지 코드 조각을 만들 수 있고 해당 코드를 실행시킨 결과를 바로 확인할 수 있습니다.

사용방법은 그저 Visual Studio Code에서 .NET Interactive Notebooks 확장기능을 설치한뒤 Ctrl + Shift + Alt + N key를 눌러 필요한 유형의 file을 생성합니다. 그 다음 언어별로 code를 작성하고 실행하기만 하면 됩니다.

 

다만 모든것이 가능하지는 않고 아래 제약사항이 존재하니 사용하기전 참고하시기 바랍니다.

  • 사용자 입력을 받을 수 없습니다. 따라서 ReadLine()이나 ReadKey()와 같은 method를 사용할 수 없습니다.
  • test code조각에 매개변수를 전달할 수 없습니다.
  • 사용자 지정 namespace를 사용할 수 없습니다.
  • 별도의 debuging도구를 지원하지 않습니다.(개선될 가능성이 있음)

● Visual Studio Code의 단축key 사용

 

사용중인 운영체제에 따라 Visual Studio Code는 비슷하지만 조금씩 다른 단축key를 사용합니다. 각각의 단축key 사용에 관해서는 아래 link를 참고하시면 됩니다.

물론 단축key는 임의로 수정할 수 있습니다. 단축key 변경에 관한 자세한 사항은 아래를 참고하시면 됩니다.

Visual Studio Code Key Bindings

 

Visual Studio Code Key Bindings

Here you will find the complete list of key bindings for Visual Studio Code and how to change them.

code.visualstudio.com

 

2. .NET 알아보기

 

● .NET Framework

 

.NET Framework는 Code의 실행을 관리하는 CLR(Common Language Runtime)과 application을 개발에 필요한 각종 class library를 제공하는 BCL(Base Class Library)를 포함, 하나의 거대한 개발 platform으로서 탄생하게 되었습니다.

 

본래 cross-flatform에 대한 실행개념은 초기 .NET Framework가 나올때 부터 적용되던 개념이었으나 결과적으로는 Windows환경에 가장 최적화된 flatform으로 성장하게 되었고 .NET Framework 4.5.2부터는 아예 Windows에 기본적으로 포함되기 시작했습니다. 또한 이미 .NET Framework는 수많은 computer에 설치된 상태가 되다보니 bug를 수정하는 것도 문제가 될 수 있기에 update를 포함해 가능한 변화를 최소화 해야 했고 현재는 보안에 관한 issue를 제외하고는 더이상의 update가 없음을 공식화 하였습니다.

 

기존에 .NET Framework 4.0이후 만들어진 application의 경우에도 GAC(Global Assembly Cache)에 저장된 같은 version의 library와 CLR을 공유하므로 호환성을 위해 특정 version이 필요한 경우 문제를 유발할 수 있습니다.

 

현재 이와 같은 문제들로 인해 앞으로는 개발되는 모든 application의 경우 .NET Framework를 사용하지 말것을 Microsoft에서는 강력히 권고하고 있습니다.

 

● Mono, Xamarin, Unity

 

Mono는 Linux에서 .NET Framework를 구현한 것으로 Linux와 Windows모두에서 동작할 수 있기에 어떻게 보면 본래 .NET Framework보다도 한발 더 나아간 cross-flatform이라 할 수 있겠습니다. 그러나 Microsoft의 공식적인 지원이 있는것도 아니었고 완벽하게 구현되지도 못했기에 기존 .NET Framework를 완벽히 대체할 수는 없었습니다.

 

하지만 Mono에서 Xamarin mobile platform의 기반이자 Unity와 같은 cross-platform game 개발 flatform의 활용성을 발견하게 되고 이에 Microsoft는 Xamarin을 2016년에 인수하여 Visual Studio에서 무료로 Xamarin의 확장기능을 사용하도록 하였습니다. 이후 mobile app만 개발이 가능했던 Xamarin Studio development tool을 Visual Studio for Mac으로 변경하고 console app이나 web service project도 가능하도록 기능을 확장하기에 이릅니다.

 

Microsoft는 여기서 그치지 않고 Visual Studio 2022 for Mac을 위해 Xamarin Studio editor의 일부 요소를 Visual Studio 2022 for Windows의 일부요소로 변경하여 최대한 비슷한 성능을 낼 수 있도록 하였으며 MacOS특유의 UI를 따르고 MacOS의 내장기술을 활용할 수 있도록 하여 신뢰성있는 동작이 가능하도록 지원하고 있습니다.

 

● .NET Core

 

software개발 trende에서 cross-flatform이 중요도가 높에 자리를 잡고있고 이에 따라 OS의 중요성은 점자 떨어지고 있습니다. Microsoft도 이러한 추세를 인식하고 기존에 Windows에 종속적이었던 .NET Framework의 종속성을 제거하고자 하였습니다.

 

그 결과 .NET Core가 탄생하게 되었으며 cross-flatform기반의 CoreCLR과 CoreFX로 알려진 비교적 간소화된 BCL을 포함하게 되었습니다.

 

OS에 종속되어 설치되던 기존과 달리 .NET Core는 app과 함께 같이 배포될 수 있는데 이는 같은 System에 설치된 다른 app에는 영향을 주지 않는 구조이므로 특정 변화에 대해 유연하게 대처할 수 있습니다.

 

● .NET

 

Microsoft는 2020년 .NET에 대한 통합게획을 발표했고 .NET 5에 이르러서는 실제 mobile을 제외한 모든 .NET flatform이 통합되었습니다. 그리고 마침내 2021년 .NET 6에 이르러 mobile까지 .NET flatform에 통합되었습니다.

 

.NET Core는 .NET이라는 이름으로 바뀌면서 주요 버전번호 였던 4를 넘어 5로 바뀌게 되었고 현재 6버전까지 출시되었습니다. 참고로 Microsoft는 매년 11월에 .NET의 주요버전을 발표할 것으로 알려졌습니다.(초창기 .NET 4 버전을 사용하지 않은 이유는 .NET Framework 4.x와의 혼동을 방지하기 위해서 였습니다.)

 

Version Released
.NET Core RC1 November 2015
.NET Core 1.0 June 2016
.NET Core 1.1 November 2016
.NET Core 1.0.4 and .NET Core 1.1.1 March 2017
.NET Core 2.0 August 2017
.NET Core for UWP in Windows 10 Fall Creators Update October 2017
.NET Core 2.1 (LTS) May 2018
.NET Core 2.2 (Current) December 2018
.NET Core 3.0 (Current) September 2019
.NET Core 3.1 (LTS) December 2019
.NET 5.0 (Current) November 2020
.NET 6.0 (LTS) November 2021
.NET 7.0 (Current) November 2022
.NET 8.0 (LTS) November 2023

 

.NET Core 3.1은 2019년에 발표되었는데 당시에 Web component개발 지원을 위한 Blazor Server를 포함하고 있었는데 본래는 Blazor WebAssembly도 같이 포함되기로 하였으나 나중에 .NET Core 3.1의 add-on형식으로 발표되었습니다.

 

● .NET 지원 정책

 

.NET은 지원정책에 따라 2가지로 나뉠 수 있는데 LTS(Long Term Supprt)와 Current가 그것입니다.

  • LTS : 안정화버전에 해당하며 수명주기동안 비교적 적은 업데이트를 필요로 합니다. LTS는 발표이후 3년간(다음 LTS발표 이후 1년간) 지원됩니다.
  • Current : feedback에 따라 변경될 수 있는 기능을 포함합니다. Current는 patch주기가 18개월이며 이 기간이 지마면 이전 minor version은 더이상 지원되지 않습니다.

물론 2개 version모두 안정성과 신뢰성에 영향을 받을 수 있는 중요 수정이 이루어지며 이에 따라 minor버전이 바뀌게 되고 해당 version을 system에 계속 유지함으로서 사용자는 항상 최신 patch상태를 계속 유지할 수 있습니다.

 

● .NET Runtime 과 .NET SDk versioning

 

.NET Runtime Version은 semantic versioning을 따르므로 major version은 전체의 큰 변경점을, minor version은 기능적인 변경, 마지막으로 patch는 bug fix를 의미합니다.

 

.NET SDK versioning은 semantic versioning을 따르지 않고 major와 minor version 모두 runtime version과 동일하게 유지됩니다. patch는 SDK의 major와 minor version을 표시하는 관레를 따라 표시되므로 bug fix나 기능적 변화에 따라 달리 표시될 수 있습니다.

 

Change Runtime SDK
Initial release 6.0.0 6.0.100
SDK bug fix 6.0.0 6.0.101
Runtime and SDK bug fix 6.0.1 6.0.102
SDK new feature 6.0.1 6.0.200

 

● 지난 .NET Version의 삭제

 

.NET Runtime Update는 major version에 한해서는 호환성을 보장합니다. 예컨데 6.x대의 update인 경우 6.x안에서는 정상적으로 호환되는 것입니다. .NET SDK의 경우에는 update되면 이전 version으로 application을 build할 수 있도록 지원하므로 이전 version을 안전하게 삭제할 수 있습니다.

 

우선 아래 명령을 통해서 현재 system에 설치된 version을 확인해 볼 수 있습니다.

dotnet --list-sdks
dotnet --list-runtimes

Windows 사용자라면 'App & features'에서 이전 version의 .NET SDK를 손쉽게 삭제할 수 있습니다.

 

● .NET Framework의 대안

 

.NET은 성능향상과 함께 cross-flatform을 기조로 개발되어진 것이며 이로 인해 기존에 존재하던 비 cross-flatform기술은 완전히 제거되었습니다. 예컨데 Windows Forms나 WPF(Windows Presentation Foundation)과 같은 것들은 Windows친화적인 것들로 macOS나 Linux에서는 필요하지 않은 부분입니다.

 

하지만 기존의 Windows Forms나 WPF를 사용할 수 없는 것은 아닙니다. 최신의 .NET을 활용하면서도 Windows Descktop Pack을 이용하면 여전히 기존과 동일한 방법으로 Windows의 Interface를 구현할 수 있습니다. 이에 legacy를 벗어나 최신의 .NET API를 활용하면서도 GUI부분을 그대로 활용할 수 있다는 장점이 있습니다. 여러분은 그저 새로운 project에 Target Framework를 .NET 6로만 잡아주면 됩니다.

Web의 경우 기존 ASP.NET Web Forms와 WCF(Windows Communication Foundation)등은 ASP.NET Core platform인 ASP.NET Core MVC, ASP.NET Core Web API, SignalR 그리고 gRPC등으로 대체되었습니다. 다만, 일부 개발자들에 의해 WCF등이 .NET에서 사용돌 수 있도록 하는 project를 진행중이기도 합니다.

 

Database와 관련해서는 Entify Framework (EF)가 있는데 관게형 Database의 data를 onject-relational mapping 기술을 통해 사용할 수 있도록 하는 기술입니다. 이것 또한 .NET에 들어서서는 Framework가 간소화 되고 Cosmos DB와 같은 비관계형 Database에서도 사용할 수 있도록 지원 되면서 Entity Framework Core라는 이름으로 재탄생하게 되었습니다.

 

● .NET Standard

 

2019년 .NET은 크게 3가지 정도로 분류되었습니다.

  • .NET Core
  • .NET Framework
  • Xamarin

각각의 framework는 용도에 따라 저마다의 목적이 분명했지만 단일화 되지 못하는 잠재적인 문제를 동시에 안고 있었습니다. 이에 Microsoft는 .NET Standard라는 것을 정의하게 됩니다.

 

.NET Standard는 이는 모든 .NET flatform이 어떤 수준의 호환성을 가지고 있는지를 나타내기 위해 구현할 수 있는 API의 집합을 위한 사양으로서 기본 지원은 NET Standard 1.4를 준수하는 flatform으로 표시됩니다. 이 후 .NET Standard 2.0부터는 최소한의 규격하에 세가지의 flatform을 결합시켜 개발자들이 flatform간 code를 공유하기 더 쉽도록 지원하게 되었으며 .NET Core 2.0에 들어서서는 .NET Framework로 작성된 code를 cross-flatform이 .NET Core로 이동시키는데 필요한 API가 대폭 추가되었습니다.(하지만 몇몇 API는 OS의 특성에 따라 사용할 수 없는 것들도 존재하였습니다.)

 

.NET Standard는 설치가능한 또 하나의 flatform이 아니라 그저 규격에 불과합니다. 따라서 .NET Standard를 사용하기 위해서는 .NET Standard의 사양을 준수하는 .NET flatform을 설치하는 것입니다. .NET Standard 2.1은 .NET Core 3.0,에서 구현되었는데 이때 부터는 .NET Framework 4.x에 의존하지 않게 되었습니다.

 

2021년 11월 .NET6가 발표된 현재는 모든 flatform을 위한 단 하나의 .NET만이 존재하므로 .NET Standard의 필요성이 없어졌습니다. .NET6는 하나의 BCL과 2개의 CLR을 가지는데 첫번째 CoreCLR은 server나 desktop에서 동작하는 app에 최적화되었으며 Mono runtime은 mobile이나 Web browser app에 최적화된 CLR입니다.

 

● IL(Intermediate Language)

 

Roslyn이라고 알려진 C# compiler는 dotnet CLI에 의해 사용되며 C# Code를 IL이라고 하는 중간언어로 변환하고 이렇게 변환된 IL Code를 다시 assembly라고 하는 DLL이나 EXE파일로 저장합니다. IL은 assembly 언어와 매우 비슷한 구조를 가지고 있는데 이 Code는 .NET의 가상machine격인 CoreCLR에 의해 실행됩니다.

 

CoreCLR은 IL Code를 assembly로 부터 읽어들여 JIT(Just In Time) compiler에게 넘기기 되는데 JIT는 IL Code를 현재 실행중인 CPU가 이해할 수 있는 native Code로 변환하여 최종적으로 app을 실행하게 됩니다. IL에서 native Code로 변환하는 이 과정때문에 macOS나 Linux에 맞는 CLR만 갖추게 되면 동일한 IL code를 실행할 수 있게 되고 자연스럽게 cross-flatform이 구현되는 것입니다.

 

이런 원리는 IL Code를 원래 source Code로 되돌릴 수 있는 여지도 만들게 되는데 이때문에 ILSpy와 같은 도구를 사용해 assembly를 읽어들이면 본래 source code를 열어볼 수 있는 위험성도 내포하고 있습니다.

 

3. Visual Studio 2022 사용해 보기 (Console App 만들기)

 

먼저 Visual Studio 2022를 실행합니다. 그리고 File -> New -> Project menu를 선택하고 이어서 나오는 Create a new project화면에서 오른쪽 Project영역의 Console App을 찾아 Next button을 눌러줍니다.(사용언어는 C#으로 합니다.)

다음 project 설정화면에서 사용할 project명과 경로, solution이름을 지정하고

그 다음화면에서는 Framework의 version을 .NET 6.0(2021년 11월 현재 최신버전)으로 선택합니다.

Project가 생성되면 다음내용의 Program.cs파일이 열릴 것입니다.

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

만약 .NET 6.0이 아닌 .NET 5.0이나 그 이하 version을 선택한 경우라면 Program.cs파일의 내용은 아마도 다음과 같이 생성될 것입니다.

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

 

이제 Visual Studio 2022의 Debug -> Start Without Debugging를 선택하면 생성된 project를 실행해 볼 수 있습니다.

 

C# 9.0이후 부터는 top-level programs라고 하여 Console App을 위한 최소한의 코드만 생성하여 실행할 수 있는 기능이 추가되었습니다. 때문에 .NET 6.0의 Console App Project는 .NET 5.0에서 처럼 몇십줄의 code가 아닌 주석을 포함한 단 2줄의 code만 기본으로 생성됩니다.

 

하지만 이 code만으로 compile되는 것은 불가능하기에 실제 compile때는 자동으로 Program class와 Main method안으로 program의 code를 묶는 작업을 선행하게 됩니다. class나 method뿐만 아니라 using을 통한 namespace의 선언도 필요한데 top-level programs에서 using을 사용하지 않아도(기본적으로) compile과 실행이 가능했던 이유는 이미 필요한 기본 namespace가 선언되어 있기 때문입니다.

 

실제 Visual Studio 2022의 Soluction Explorer에서 'Show All Files'를 선택해 보면 숨겨진 bin과 obj folder를 볼 수 있는데 이 중에서 obj의 Debug -> .net6.0 -> xxx.GlobalUsings.g.cs(xxx는 project 이름입니다.) file을 열어보면 다음과 같은 내용을 확인하실 수 있습니다.

// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

즉, 모든 program file에서 사용가능한 namespace가 global로 선언되어 있기에 top-lovel programs에서 생성한 Program.cs file에도 using System; 구문조차 필요하지 않았던 것입니다.

 

compiler는 source code의 object file을 생성하고 위에서 처럼 실행가능한 다른 file과의 연결작업을 통해 최종적으로 실행가능한 실행 file을 bin folder에 생성하게 됩니다.

 

4. Visual Studio Code 사용해 보기 (Console App 만들기)

 

project를 저장할 특정한 folder를 만들고 Terminal에서 해당 folder를 찾아간뒤 아래 명려을 통해 새로운 project를 생성합니다. (예제어서는 해당 folder를 'C:\Users\Administrator\Documents\csharp'으로 생성하였습니다.)

dotnet new console

위 명령은 기본적으로 system에서 생성가능한 가장 최신의 .NET version을 사용하게 되는데 만약 특정 version에 맞춰진 project를 생성하려면 -f option을 사용해 project를 생성합니다.

dotnet new console -f net5.0

그러면 잠시 후 project가 생성되며 Visual Studio Code를 통해 해당 project의 구조와 program file을 살펴볼 수 있게 됩니다.

Vsual Studio Code에서 Program.cs file을 열게 되면 아마도 Visual Studio Code에서는 C#에 의존성이 있는(이미 Visual Studio Code에 C# Extension이 설치되어 있다고 가정합니다.) .NET Core Debugger나 Razor등의 추가적인 Extension을 설치할 것입니다.

 

해당 project를 실행하기 위해서는 아래 명령을 사용할 수 있습니다.

dotnet run

dotnet 명령의 사용에 관한 정보를 얻는 가장 간단한 방법은 -h 혹은 --help option을 사용하는 것입니다.

 

5. .NET Interactive Notebook 사용해 보기

 

.NET Interactive Notebook(줄여서 Notebook이라고 표현하겠습니다.)을 사용하면 아주 간단하게 top-level program을 생성하고 실행해 볼 수 있습니다.

 

Notebook을 사용을 위해서는 우선 관련 Extention을 설치해야 합니다.

Extention설치 후 View -> Command Palette에서 '.NET Interactive: Create new blank notebook'항목을 찾아 선택합니다.

 

잠시 뒤 .dib를 만들것인지 ipynb를 만들것인지를 물어오는데 그때 .dib를 선택합니다. .dib는 Python interactive notebook에서 사용되는 .ipynb 파일과의 호환성문제와 혼란을 방지학기 위해 microsoft에서 정의한 format인데 본래 interactive 혼합data와 Python code(PY) 그리고 notebook file(NB)의 출력을 포함하는 Jupyter전용 이었으나 .NET Interactive Notebook들어서 C#, F#, SQL, HTML, JavaScript, Markdown및 다른언어의 혼합이 가능하도록 확장되었습니다. .dib는 polyglot인데 다른 언어와의 혼합을 지원한다는 의미를 내포하고 있으며 .dib와 .ipynb file간 변환또한 지원하고 있습니다.

 

.dib를 선택하고 나면 사용할 언어에 대한 선택이 나오는데 이때는 'C#'을 선택합니다. 정상적으로 처리된 경우라면 다음과 같은 화면을 볼 수 있게 됩니다.

처음에 표시되는 cell에는 사용언어가 C#으로 지정되어 있으나 다른 언어를 사용하고자 한다면 'C# (.NET Interactive)'를 선택하여 원하는 언어를 지정할 수 있습니다.

cell에서는 간단한 message를 출력하기 위해 아래 code를 입력합니다. 주의할 점은 문장끝에 ';'문자가 필요하지 않다는 것입니다.

Console.WriteLine("Hello!!!")

cell에는 일반적인 C#구문뿐만 아니라 notebook을 위한 특정한 명령이나 markdown을 아래와 같이 사용할 수도 있습니다.

만약 여러개의 cell에서 사용된 code간에 결합이 필요하다면 우선 code를 기준으로 가장 상위의 cell을 먼저 실행해야 합니다. 예를 들어 첫번째 cell에서 변수를 사용했고 두번째 cell에서 첫번째 cell에 사용된 변수를 사용해야 한다면 첫번째 cell을 먼저 실행하고 그 다음 두번째 cell을 실행해야 합니다.

혹은 'Run All' button을 통해 전체를 실행해도 같은 결과를 얻을 수 있습니다.

728x90

'.NET' 카테고리의 다른 글

[C#] C# 간단히 살펴보기  (0) 2021.11.29
[Visual Studio IDE] Visual Studio IDE의 Registry 설정  (0) 2021.11.27
[.NET] .NET 시작하기  (0) 2021.11.23
.NET과 C# 시작하기  (0) 2021.10.28
[.NET] 가비지 컬렉션(Garbage Collection)  (0) 2021.10.25

태그

관련글 더보기

댓글 영역