Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
14m 10s
C#은 전통적으로 컴파일된 언어로, 가장 간단한 프로그램도 실행하려면 프로젝트, 솔루션 및 Visual Studio 설정이 필요합니다. 그러나 .NET 10으로 인해 상황이 크게 변화했습니다. Tim Corey는 "C# 스크립팅과 파일 실행" 비디오에서 개발자들이 이제 C#을 스크립팅 언어로 간주하여, 전체 프로젝트를 만들지 않고도 스크립트 파일을 직접 실행할 수 있는 방법을 보여 줍니다. 이 새로운 기능 덕분에 프로그래머는 단일 cs 파일에 스크립트 코드를 작성하여 명령 프롬프트에서 실행하고 새로운 코드를 신속하게 실험할 수 있습니다.
이 문서에서는 Tim의 지침을 따라 워크플로우, 명령줄 사용 및 파일 기반 C# 실행의 고급 기능을 이해하기 위해 이러한 기능을 자세히 탐구할 것입니다.
Tim은 비디오에서 .NET 10의 C# 스크립팅이 단일 cs 파일이 완전한 애플리케이션으로 작동할 수 있도록 한다고 강조합니다. 전통적인 Visual Studio 프로젝트와는 달리, 공용 클래스 선언, Program.cs, 혹은 솔루션 파일이 필요하지 않습니다. 이제 스크립트를 작성하여 demo.cs로 저장하고 즉시 실행할 수 있습니다.
이 접근 방식은 Python이나 JavaScript의 스크립팅과 유사하여, 단일 파일이 프로젝트를 만들지 않고 작업을 수행할 수 있습니다. Tim은 이것이 단순한 편의성을 넘어, 빠르게 작업을 실행하고, 명령문을 테스트하며, 객체나 데이터를 실험할 수 있는 능력을 제공한다고 강조합니다.
Tim은 Visual Studio Code에서 FileDemo.cs라는 간단한 cs 파일을 생성하는 것을 보여 줍니다. 다음 코드는 전형적인 "hello world" 예제로 사용됩니다:
Console.WriteLine("Hello World");
파일을 실행하는 것은 명령 프롬프트를 열고 다음을 실행하는 것만큼 간단합니다:
dotnet run FileDemo.cs
출력은 즉시 Hello World를 표시하며, 단일 파일의 런타임 실행이 완전히 지원됨을 보여줍니다. Tim은 이 접근 방식이 새로운 코드 테스트, 작은 스크립트, 또는 전체 프로젝트의 오버헤드가 불필요한 상황에 이상적임을 지적합니다.
그런 다음 Tim은 스크립트 코드에서 명령줄 인수를 수락할 수 있는 능력을 시연합니다. hello world 예제를 수정하여 값을 스크립트 파일로 직접 전달할 수 있습니다:
Console.WriteLine($"Hello {args[0]}");
.NET run demo.cs Tim을 실행하면 출력이 Hello Tim으로 변경됩니다. Tim은 args 배열이 전통적인 콘솔 애플리케이션과 정확히 같은 방식으로 작동한다고 지적하며, 파일 기반 스크립트도 모든 언어 기능을 갖춘 완전한 C# 애플리케이션임을 보여줍니다.
Tim은 .NET 10이 암시적 using 지시문을 지원하여 System 네임스페이스에 명시적으로 using System;을 작성하지 않고도 접근할 수 있다고 설명합니다. 이는 상용구 구문을 줄이고 스크립트의 첫 번째 객체나 메서드가 즉시 실행되도록 함으로써 간소화를 제공합니다.
이 간소화는 csx 파일 확장자 및 Visual Studio Code의 상호작용 창 워크플로우까지 확장되어, 개발자는 REPL 창이나 상호작용 창을 사용하여 Python 스크립팅과 유사하게 스크립트 코드를 한 줄씩 테스트할 수 있습니다.
다음으로, Tim은 사용자의 입력을 읽음으로써 스크립트를 상호작용적으로 만드는 방법을 보여줍니다:
Console.Write("당신의 이름은 무엇입니까? ");
string name = Console.ReadLine();
Console.WriteLine($"Hello {name}");
여기서 첫 번째 상호작용 객체는 즉시 접근 및 표시될 수 있는 문자열 name입니다. Tim은 경고가 나타날 수 있지만 적절히 처리할 수 있음을 지적합니다. 입력을 읽고 출력을 표시할 수 있는 이 기능은 스크립트 파일을 단순한 데모 코드를 넘어 다양한 작업에 실용적이고 다양하게 만듭니다.
스크립트 파일의 런타임 기능을 확장하기 위해, Tim은 NuGet 패키지를 소개합니다. 예를 들어, Spectre.Console을 사용하여 출력에 색상을 추가할 수 있습니다:
#r "nuget: Spectre.Console, 0.54.0"
using Spectre.Console;
AnsiConsole.MarkupLine("[red]Hello Tim[/]");
Tim은 스크립트 코드에서 NuGet 패키지를 통해 참조를 추가하면 개발자가 전체 프로젝트 없이 외부 어셈블리를 활용할 수 있다고 설명합니다. Tim은 스크립트를 실행하여 콘솔이 사용자의 이름을 빨간색으로 표시하는 것을 보여주며, 파일 기반 스크립트가 전체 프로젝트만큼 강력할 수 있음을 시연합니다.
Tim은 또한 cs 파일에서 실행파일을 생성하는 방법을 다룹니다. 다음 명령을 실행하면:
dotnet publish Filedemo.cs
Windows, Linux, 또는 Mac용 DLL 또는 EXE를 생성하여 스크립트 파일을 이식성 있게 만들 수 있습니다. 그는 이러한 실행 파일들이 네이티브 AOT(앞서 컴파일된)로 최대 실행 성능을 제공한다고 강조합니다. 필요에 따라 파일 상단에 있는 속성 지시자를 사용해 AOT 속성을 끌 수 있습니다.
.NET 10 스크립팅의 단순한 문법을 유지하면서 실생산 수준의 파일을 생성할 수 있는 능력을 보여줍니다.
여러 클래스, 메서드, 객체가 필요한 더 복잡한 애플리케이션에서는 Tim이 스크립트 파일을 전체 프로젝트로 변환하는 방법을 보여줍니다:
dotnet project convert FileDemo.cs
이 명령은 NuGet 패키지 참조, nullable 설정, 암시적 사용을 유지하면서 CS 프로젝트 파일을 포함하는 새 폴더를 생성합니다. 원래 스크립트의 다음 코드는 유지되어 Visual Studio 솔루션에 쉽게 통합하거나 독립 실행형 프로젝트로 실행할 수 있습니다.
Tim은 C# 스크립팅 및 파일 실행의 여러 가지 장점을 강조합니다:
속도 – 스크립트 파일에서 즉시 새 코드를 실행.
이식성 – Windows, Linux, macOS용 실행 파일로 스크립트 게시.
강력함 – 스크립트는 NuGet 패키지를 사용하고 데이터를 액세스하며 사용자 입력을 처리할 수 있습니다.
유연성 – 최소의 노력으로 cs 파일을 전체 프로젝트로 승격합니다.
비용 절감 – 간단한 작업에 대한 솔루션, 프로젝트 또는 클래스 선언이 필요하지 않습니다.
Tim은 파일 기반 스크립트가 모든 경우에 적합하지는 않지만, 테스트, 데모 및 빠른 콘솔 기반 작업에 완벽하다고 언급합니다.
Tim Corey의 비디오는 .NET 10에서 C# 스크립팅이 개발자에게 강력하고 유연한 도구임을 보여줍니다. 스크립트 파일은 새 코드를 즉시 실행하고 사용자 입력을 처리하며 객체와 상호 작용하고 NuGet 패키지를 사용할 수 있습니다. 스크립트는 명령 프롬프트에서 실행되거나 Visual Studio Code에서 실행되거나 DLL 또는 EXE로 게시되어 플랫폼 간 사용에 적합합니다.
스크립트 코드를 전체 프로젝트로 변환할 수 있는 기능은 스크립트 파일의 단순함과 전통적인 Visual Studio 프로젝트의 확장성을 모두 제공합니다. Tim은 개발자가 자유롭게 스크립트 코드를 작성, 테스트 및 수정하도록 권장하여 C# 스크립팅을 빠른 개발과 실험을 위한 귀중한 도구로 만듭니다.
Tim의 요약에 따르면, 이 방법은 작은 프로젝트, 콘솔 애플리케이션 및 데이터 처리 작업에 이상적이며 전통적인 C# 개발을 보완하는 현대적이고 효율적인 워크플로를 제공합니다.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy