다음을 통해 공유


작업 공간과 함께 작업하기

작업 영역 계층은 코드 분석을 수행하고 전체 솔루션에 대해 리팩터링하기 위한 시작점입니다. 이 계층 내에서 작업 영역 API는 솔루션의 프로젝트에 대한 모든 정보를 단일 개체 모델로 구성하는 데 도움이 되며, 파일을 구문 분석하거나, 옵션을 구성하거나, 프로젝트 간 종속성을 관리할 필요 없이 소스 텍스트, 구문 트리, 의미 체계 모델 및 컴파일과 같은 컴파일러 계층 개체 모델에 직접 액세스할 수 있습니다.

IDE와 같은 호스트 환경은 열린 솔루션에 해당하는 작업 영역을 제공합니다. 솔루션 파일을 로드하기만 하면 IDE 외부에서 이 모델을 사용할 수도 있습니다.

작업 공간

작업 영역은 솔루션의 활성 표현으로, 각각 문서 컬렉션이 있는 프로젝트 컬렉션입니다. 작업 영역은 일반적으로 사용자가 속성을 형식화하거나 조작할 때 지속적으로 변경되는 호스트 환경에 연결됩니다.

솔루션 Workspace 의 현재 모델에 대한 액세스를 제공합니다. 호스트 환경의 변경이 발생하면 작업 영역이 해당 이벤트를 발생시키고 속성이 Workspace.CurrentSolution 업데이트됩니다. 예를 들어 사용자가 원본 문서 중 하나에 해당하는 텍스트 편집기를 입력할 때 작업 영역은 이벤트를 사용하여 솔루션의 전체 모델이 변경되었으며 수정된 문서를 알립니다. 그런 다음, 새 모델의 정확성을 분석하거나, 중요한 영역을 강조 표시하거나, 코드 변경에 대한 제안을 하여 이러한 변경 내용에 대응할 수 있습니다.

호스트 환경과 연결이 끊어지거나 호스트 환경이 없는 애플리케이션에서 사용되는 독립 실행형 작업 영역을 만들 수도 있습니다.

솔루션, 프로젝트 및 문서

키를 누를 때마다 작업 영역이 변경될 수 있지만 솔루션 모델을 사용하여 격리된 상태로 작업할 수 있습니다.

솔루션은 프로젝트 및 문서의 변경할 수 없는 모델입니다. 즉, 잠금 또는 중복 없이 모델을 공유할 수 있습니다. 속성에서 솔루션 인스턴스를 Workspace.CurrentSolution 가져온 후에는 해당 인스턴스가 변경되지 않습니다. 그러나 구문 트리 및 컴파일과 마찬가지로 기존 솔루션 및 특정 변경 내용을 기반으로 새 인스턴스를 생성하여 솔루션을 수정할 수 있습니다. 작업 영역에서 변경 내용을 반영하도록 하려면 변경된 솔루션을 작업 영역에 명시적으로 다시 적용해야 합니다.

프로젝트는 전체 변경할 수 없는 솔루션 모델의 일부입니다. 모든 소스 코드 문서, 구문 분석 및 컴파일 옵션, 어셈블리 및 프로젝트 대 프로젝트 참조를 모두 나타냅니다. 프로젝트에서 프로젝트 종속성을 확인하거나 소스 파일을 구문 분석할 필요 없이 해당 컴파일에 액세스할 수 있습니다.

문서는 전체 변경할 수 없는 솔루션 모델의 일부이기도 합니다. 문서는 파일의 텍스트, 구문 트리 및 의미 체계 모델에 액세스할 수 있는 단일 원본 파일을 나타냅니다.

다음 다이어그램은 작업 영역이 호스트 환경, 도구와 어떻게 관련되어 있는지, 그리고 편집이 수행되는 방식을 보여 줍니다.

프로젝트와 소스 파일을 포함하는 작업 영역의 여러 요소 간의 관계

요약

Roslyn은 소스 코드에 대한 풍부한 정보를 제공하고 C# 및 Visual Basic 언어와의 완전한 호환성을 갖춘 컴파일러 API 및 워크스페이스 API 집합을 제공합니다. .NET 컴파일러 플랫폼 SDK는 코드 중심 도구 및 애플리케이션을 만들기 위한 진입 장벽을 크게 낮춥니다. 메타 프로그래밍, 코드 생성 및 변환, C# 및 Visual Basic 언어의 대화형 사용, 도메인별 언어에 C# 및 Visual Basic 포함과 같은 영역에서 혁신을 위한 많은 기회를 만듭니다.