다음을 통해 공유


작업 영역 작업

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

IDE와 같은 호스트 환경은 개방형 솔루션에 해당하는 작업 영역을 제공합니다. 간단히 솔루션 파일을 로드하여 IDE 외부에서 이 모델을 사용할 수도 있습니다.

작업 영역

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

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

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

솔루션, 프로젝트, 문서

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

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

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

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

다음 다이어그램은 작업 영역이 호스트 환경, 도구에 연결되는 방법 및 편집하는 방법을 표현합니다.

the relationships between different elements of a workspace containing projects and source files

요약

Roslyn은 소스 코드에 대한 풍부한 정보를 제공하고 C# 및 Visual Basic 언어로 완전한 충실도를 가진 컴파일러 API 및 작업 영역 API의 집합을 노출합니다. .NET Compiler Platform SDK는 코드 중심 도구 및 애플리케이션을 만들기 위한 진입에 대한 장벽을 크게 낮춰줍니다. 메타 프로그래밍, 코드 생성 및 변환, C# 및 Visual Basic 언어의 대화형 사용, 도메인 특정 언어에 C# 및 Visual Basic 포함과 같은 영역에서 다양한 혁신 기회를 창출합니다.