작업 영역 계층은 코드 분석을 수행하고 전체 솔루션에 대해 리팩터링하기 위한 시작점입니다. 이 계층 내에서 작업 영역 API는 솔루션의 프로젝트에 대한 모든 정보를 단일 개체 모델로 구성하는 데 도움이 되며, 파일을 구문 분석하거나, 옵션을 구성하거나, 프로젝트 간 종속성을 관리할 필요 없이 소스 텍스트, 구문 트리, 의미 체계 모델 및 컴파일과 같은 컴파일러 계층 개체 모델에 직접 액세스할 수 있습니다.
IDE와 같은 호스트 환경은 열린 솔루션에 해당하는 작업 영역을 제공합니다. 솔루션 파일을 로드하기만 하면 IDE 외부에서 이 모델을 사용할 수도 있습니다.
작업 공간
작업 영역은 솔루션의 활성 표현으로, 각각 문서 컬렉션이 있는 프로젝트 컬렉션입니다. 작업 영역은 일반적으로 사용자가 속성을 형식화하거나 조작할 때 지속적으로 변경되는 호스트 환경에 연결됩니다.
솔루션 Workspace 의 현재 모델에 대한 액세스를 제공합니다. 호스트 환경의 변경이 발생하면 작업 영역이 해당 이벤트를 발생시키고 속성이 Workspace.CurrentSolution 업데이트됩니다. 예를 들어 사용자가 원본 문서 중 하나에 해당하는 텍스트 편집기를 입력할 때 작업 영역은 이벤트를 사용하여 솔루션의 전체 모델이 변경되었으며 수정된 문서를 알립니다. 그런 다음, 새 모델의 정확성을 분석하거나, 중요한 영역을 강조 표시하거나, 코드 변경에 대한 제안을 하여 이러한 변경 내용에 대응할 수 있습니다.
호스트 환경과 연결이 끊어지거나 호스트 환경이 없는 애플리케이션에서 사용되는 독립 실행형 작업 영역을 만들 수도 있습니다.
솔루션, 프로젝트 및 문서
키를 누를 때마다 작업 영역이 변경될 수 있지만 솔루션 모델을 사용하여 격리된 상태로 작업할 수 있습니다.
솔루션은 프로젝트 및 문서의 변경할 수 없는 모델입니다. 즉, 잠금 또는 중복 없이 모델을 공유할 수 있습니다. 속성에서 솔루션 인스턴스를 Workspace.CurrentSolution 가져온 후에는 해당 인스턴스가 변경되지 않습니다. 그러나 구문 트리 및 컴파일과 마찬가지로 기존 솔루션 및 특정 변경 내용을 기반으로 새 인스턴스를 생성하여 솔루션을 수정할 수 있습니다. 작업 영역에서 변경 내용을 반영하도록 하려면 변경된 솔루션을 작업 영역에 명시적으로 다시 적용해야 합니다.
프로젝트는 전체 변경할 수 없는 솔루션 모델의 일부입니다. 모든 소스 코드 문서, 구문 분석 및 컴파일 옵션, 어셈블리 및 프로젝트 대 프로젝트 참조를 모두 나타냅니다. 프로젝트에서 프로젝트 종속성을 확인하거나 소스 파일을 구문 분석할 필요 없이 해당 컴파일에 액세스할 수 있습니다.
문서는 전체 변경할 수 없는 솔루션 모델의 일부이기도 합니다. 문서는 파일의 텍스트, 구문 트리 및 의미 체계 모델에 액세스할 수 있는 단일 원본 파일을 나타냅니다.
다음 다이어그램은 작업 영역이 호스트 환경, 도구와 어떻게 관련되어 있는지, 그리고 편집이 수행되는 방식을 보여 줍니다.
요약
Roslyn은 소스 코드에 대한 풍부한 정보를 제공하고 C# 및 Visual Basic 언어와의 완전한 호환성을 갖춘 컴파일러 API 및 워크스페이스 API 집합을 제공합니다. .NET 컴파일러 플랫폼 SDK는 코드 중심 도구 및 애플리케이션을 만들기 위한 진입 장벽을 크게 낮춥니다. 메타 프로그래밍, 코드 생성 및 변환, C# 및 Visual Basic 언어의 대화형 사용, 도메인별 언어에 C# 및 Visual Basic 포함과 같은 영역에서 혁신을 위한 많은 기회를 만듭니다.
.NET