이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

2018년 8월 (버전 1.27)

업데이트 1.27.2: 이 업데이트는 다음 이슈를 해결합니다.

다운로드: Windows: x64 | Mac: Intel | Linux 64비트: deb rpm tarball | 32비트: deb rpm tarball


Visual Studio Code의 2018년 8월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하시길 바라는 몇 가지 중요한 업데이트가 있으며, 주요 내용은 다음과 같습니다.

이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com업데이트로 이동하십시오.
클라우드 개발자 옹호자 Brian Clark의 1.27 릴리스 하이라이트 동영상도 확인해 보세요.

Insider: 가능한 한 빨리 새로운 기능을 보려면? 야간 빌드인 Insider를 다운로드하고 최신 업데이트를 즉시 사용해 볼 수 있습니다. 최신 Visual Studio Code 뉴스, 업데이트 및 콘텐츠를 보려면 Twitter @code를 팔로우하세요!

워크벤치

설정 편집기

지난 몇 달 동안 설정을 편집하기 위한 GUI를 개발해 왔습니다. 1.27에서는 이를 기본 설정 편집기로 만들었습니다.

Settings UI

'파일: 사용자 설정 열기(JSON)' 명령을 사용하거나 "workbench.settings.editor" 설정을 변경하여 JSON 설정 편집기에 계속 액세스할 수 있습니다.

이번 달에 개선한 한 가지는 설정 설명(enumDescriptions)을 사용자 지정 드롭다운 컨트롤로 이동하여 UI를 정리한 것입니다.

dropdown

수정된 설정은 이제 편집기의 수정된 줄처럼 파란색 선으로 표시됩니다. 톱니바퀴 아이콘을 클릭하면 컨텍스트 메뉴가 열리고 설정을 기본값으로 재설정하는 옵션이 표시됩니다.

modified indicator and context menu

설정 값이 이제 유효성 검사되며, 유효성 검사 오류가 표시됩니다.

validation error

이제 목차가 검색 중에 계속 표시되며 일치하는 카테고리만 표시하도록 필터링됩니다. 카테고리를 클릭하면 해당 카테고리의 설정만 필터링됩니다. 검색 중에 목차를 숨기려면 "workbench.settings.settingsSearchTocBehavior""hidden"으로 설정하세요.

settings search

설정에서 검색할 때 Bing 기반 검색 서비스는 관련성이 있다고 생각하는 결과를 계속 제공합니다. 이제 해당 서비스는 Marketplace에서 관련 설정이 있는 확장 프로그램도 표시합니다. 설정 검색 결과 하단에 일치하는 확장 프로그램 표시 버튼이 표시됩니다. 클릭하면 일치하는 확장 프로그램을 가진 확장 프로그램 보기가 열립니다.

extension settings

Windows 및 Linux의 사용자 지정 제목 표시줄 및 메뉴

또한 지난 몇 번의 반복에서 Windows 및 Linux의 제목 표시줄 및 메뉴의 모양과 사용 편의성을 개선하기 위해 노력해 왔습니다. 이번 반복에서는 곧 Windows에서 기본 환경으로 만들 목표로 미리 보기 레이블을 제거했습니다. 이 기능을 활성화하려면 "window.titleBarStyle" 설정을 "custom"으로 설정하세요.

Custom Title Bar and Menus

새로운 환경은 기본 환경에 비해 여러 가지 장점이 있습니다.

  • 제품 전반에 걸쳐 테마화 가능한 제목 표시줄, 메뉴 표시줄 및 상황에 맞는 메뉴. 즉, 어두운 테마가 계속 어둡게 유지됩니다!
  • 메뉴 표시줄에서 개선된 키보드 탐색. 키보드를 사용하여 메뉴 간 전환과 메뉴 니모닉 사용이 쉬워졌습니다.
  • 덜 방해가 되는 메뉴 표시줄. "window.menuBarVisibility""toggle"로 설정하면 새로운 환경이 더 간결하고 덜 거슬립니다.
  • 개선된 접근성. 화면 읽기 프로그램 사용 시 메뉴 사용 편의성을 개선하기 위해 몇 가지 접근성 문제가 해결되었습니다.

Windows에서 이 새로운 환경을 기본값으로 만들고 싶기 때문에, 사용해 보시고 피드백을 보내주시면 가능한 최고의 환경을 제공할 수 있도록 노력하겠습니다.

빵가루(Breadcrumbs) 개선

새로운 빵가루 표시줄을 조정하고 다양한 개선 사항을 적용했으며 버그를 수정했습니다.

  • 포커스된 문서 기호가 편집기에서 강조 표시됩니다.
  • 포커스 명령(⇧⌘; (Windows, Linux Ctrl+Shift+;))이 실행되면 빵가루가 자동으로 활성화됩니다.
  • 빵가루가 테마와 더 잘 작동합니다.
  • 빵가루가 이제 파일 제외 구성을 존중합니다.

Breadcrumbs Highlights

새 터미널 메뉴

작업 메뉴의 이름이 **터미널**로 변경되었으며 통합 터미널에 대한 항목이 더 추가되었습니다.

Terminal Menu

플랫폼별 키 바인딩

키 바인딩의 when 절 내에서 isLinux, isMacisWindows를 사용하여 특정 운영 체제에 대한 바로 가기 키를 활성화할 수 있습니다.

[
  {
    "key": "ctrl+o",
    "command": "workbench.action.files.openFolder",
    "when": "!isMac"
  },
  {
    "key": "cmd+o",
    "command": "workbench.action.files.openFolder",
    "when": "isMac"
  }
]

이를 통해 서로 다른 컴퓨터 간에 keybindings.json 파일을 훨씬 쉽게 공유할 수 있습니다.

창을 새 네이티브 탭으로 열기

macOS 전용 새 명령인 workbench.action.newWindowTab은 창을 새 네이티브 탭으로 엽니다. newWindowTab에는 기본 키 바인딩이 없으며 window.nativeTabs 설정을 활성화해야 합니다.

외부에서 삭제/이름 변경된 파일이 더 이상 닫히지 않음

workbench.editor.closeOnFileDelete 설정의 기본값이 true에서 false로 변경되었습니다. 이는 VS Code 외부(또는 Git과 같은 다른 프로그램이나 통합 터미널의 명령)에서 삭제되거나 이름이 변경된 파일이 더 이상 편집기 탭으로 열린 파일을 닫지 않음을 의미합니다. 대신 파일이 디스크에서 삭제되었음을 나타내며 파일을 저장하여 복원할 수 있습니다.

Deleted from Disk

참고: 파일이 더럽혀지지 않은 경우, 파일 내용은 다시 시작해도 보존되지 않습니다.

가운데 클릭으로 새 편집기에서 파일 열기

이제 탐색기 보기에서 가운데 마우스 클릭을 사용하여 파일을 새 편집기에서 열 수 있으며 미리 보기 모드에서 이전 편집기를 재사용하지 않습니다.

접근성 개선 사항

몇 가지 접근성 문제가 해결되었습니다. 주로 키보드 탐색, 화면 읽기 프로그램 지원 및 포커스와 관련된 문제입니다. 전체 목록은 여기에서 확인할 수 있습니다. 이는 9월에도 계속 진행할 계획인 지속적인 노력입니다.

개선된 Windows 백그라운드 업데이트

일부 사용자의 설치 오류를 해결하기 위해 사용자 지정 Windows 백그라운드 업데이트 프로그램의 안정성 작업을 수행했습니다. 이는 앞으로 릴리스에서 더 많은 개선 사항이 있을 지속적인 작업 항목입니다.

편집기

자동 닫기 및 주위 문자

프로그래밍 언어에 따라 {, [ 또는 (와 같은 특정 괄호를 입력할 때, 일반적으로 표현식을 시작할 수 없는 특정 문자(예: ;:.,=}])>) 뒤에 오는 경우 기본적으로 자동으로 닫힙니다. 이 동작은 editor.autoClosingBrackets 설정으로 사용자 지정할 수 있습니다. 마찬가지로 editor.autoClosingQuotes를 사용하여 따옴표(", ' 또는 `)를 입력할 때 자동 닫기 동작을 사용자 지정할 수 있습니다.

텍스트가 선택된 상태에서 이러한 문자 중 하나를 입력하면 선택 영역이 괄호나 따옴표로 둘러싸입니다. 이제 새 editor.autoSurround 설정을 통해 이 동작을 별도로 조정할 수 있습니다.

언어

CSS 가져오기 경로 완성

CSS, SCSS 및 Less @import에 대한 경로 완성이 이제 가능합니다. SCSS 부분 @import도 처리됩니다.

css-import

이제 CSS, SCSS 및 Less의 @importurl() 링크에 대한 정의로 이동할 수 있습니다.

css-definition

JSON

내장 JSON 언어 확장이 이제 새로운 JSON 스키마 Draft-07을 지원합니다.

가장 흥미로운 추가 기능은 조건부 스키마 평가를 허용하는 if, then, else 키워드입니다.

{
  "type": "integer",
  "minimum": 1,
  "maximum": 1000,
  "if": { "minimum": 100 },
  "then": { "multipleOf": 100 },
  "else": {
    "if": { "minimum": 10 },
    "then": { "multipleOf": 10 }
  }
}

if 키워드는 값 스키마의 유효성 검사가 통과되면 then 스키마를 적용하고, 그렇지 않으면 else 스키마를 적용함을 의미합니다.

HTML

HTML 포맷터가 JS Beautifier의 버전 1.8.1로 업데이트되었습니다.

"html.format.wrapAttributes" 설정에 새로운 옵션이 추가되었습니다.

  • "aligned-multiple"은 최대 줄 길이에 도달하면 속성을 줄 바꿈하고 모든 줄 바꿈된 줄을 첫 번째 속성에 맞춥니다.

aligned-multiple

TypeScript 3.0.3

VS Code는 이제 TypeScript 3.0.3을 제공합니다. 이 마이너 릴리스는 여러 버그를 수정하고 안정성을 개선했습니다. 변경 사항 전체는 여기에서 읽을 수 있습니다.

디버깅

로드된 스크립트 보기가 이제 재사용 가능

1년 이상 동안 디버그 보기의 로드된 스크립트 탐색기는 Node.js 디버그 확장에서 제공했으며 다른 디버거에서는 사용할 수 없었습니다. 이번 릴리스에서는 로드된 스크립트 보기를 내장 디버거 기능으로 추가했습니다. "스크립트" 개념이 있는 모든 디버그 확장은 동적으로 업데이트되는 보기에서 스크립트에 액세스할 수 있습니다.

또한 이전 로드된 스크립트 탐색기의 몇 가지 단점을 개선했습니다.

  • 단일 하위 폴더 체인이 이제 단일 노드로 축소됩니다. 이를 통해 깊지만 희소한 폴더 계층 구조를 훨씬 쉽게 드릴 다운할 수 있습니다.
  • 접근성 문제를 해결하기 시작했습니다.

가운데 클릭으로 중단점 제거

이제 중단점 보기에서 가운데 마우스 클릭을 사용하여 중단점을 쉽게 제거할 수 있습니다.

디버그 시작 시마다 열리도록 "openDebug" 기본값 변경

새 사용자에게는 디버그 세션을 시작할 때 디버그 보기가 항상 자동으로 열리지 않으면 혼란스러울 수 있습니다. 사용자가 UI에 익숙하지 않으면 UI를 열기 위해 어떤 키워드를 찾아야 하는지 모릅니다. 혼란을 피하기 위해 debug.openDebug의 기본값을 openOnSessionStart로 변경하여 디버그 보기가 세션 시작 시마다 열리도록 했습니다(이전 기본 동작).

확장 프로그램 작성

확장 로깅

activate 함수의 인수로 전달되는 ExtensionContext에는 새로운 속성 logPath가 있습니다. 이것은 확장이 로그 파일을 저장할 수 있는 디렉토리의 절대 파일 경로입니다. 이 경로는 확장에 고유하며 다른 확장에서 재사용되지 않습니다.

언어 서버 프로토콜

언어 서버 프로토콜의 새 버전이 제공되며 VS Code에서 사용할 수 있는 해당 노드 모듈이 포함되어 있습니다.

새 버전은 다음을 지원합니다.

  • 서버에서 코드 작업 종류 공지를 통해 클라이언트가 해당 메뉴 항목을 채울 수 있습니다.
  • textDocument/prepareRename 구현.
  • workspace/applyEdit에서의 파일 작업(생성, 이름 변경 및 삭제) 지원.

vscode-languageclient: JSON 로그 형식 및 로그 스트리밍

이전에 vscode-languageclient를 사용하여 언어 서버 확장을 빌드할 때 [langId].trace.server를 지정하여 LSP 로그를 VS Code 출력 채널로 보낼 수 있었습니다.

[langId].trace.server는 이제 머신에서 읽을 수 있는 JSON 형식으로 로깅 정보를 출력할 수 있습니다.

"languageServerExample.trace.server": {
  "format": "json", // or "text"
  "verbosity": "verbose" // or "off" | "messages"
}

이를 통해 언어 서버의 동작을 시각화하기 위해 LSP 로그를 LSP Inspector로 스트리밍하는 등 흥미로운 사용 사례를 열 수 있습니다.

lsp-streaming

이 내용에 대한 자세한 내용은 Microsoft/language-server-protocol-inspectorlsp-log-streaming-sample에서 확인할 수 있습니다.

디버그 확장 프로그램: 내장 로드된 스크립트 보기

로드된 스크립트 탐색기가 이제 VS Code 디버거의 내장 구성 요소입니다. 사용하려면 디버거 확장이 다음과 같이 디버그 어댑터를 변경해야 합니다.

  • initialize 요청에서 반환된 Capabilitiestrue 값으로 supportsLoadedSourcesRequest 기능을 추가합니다.
  • 현재 로드된 스크립트 집합을 반환하는 loadedSources 요청을 구현합니다.
  • 새로 로드되거나 언로드된 스크립트에 대해 loadedSource 이벤트를 보냅니다.

새로운 테마 색상

빵가루에 대한 새 테마 색상이 있습니다.

  • breadcrumb.background: 빵가루 항목의 배경색.

설정 편집기에 대한 새 테마 색상이 있습니다.

  • settings.dropdownListBorder: 새 드롭다운 컨트롤의 테두리 색상.
  • settings.modifiedItemIndicator: 수정된 설정을 나타내는 줄의 색상.

Git 확장 API

Git 확장은 더 명확한 API를 노출하기 시작했습니다. 이 API는 다른 확장에서 사용자 작업 공간에 열려 있는 Git 저장소와 상호 작용하는 데 사용할 수 있습니다. 아직 초기 단계이므로 앞으로 릴리스에서 API를 지속적으로 개선할 예정입니다.

제안된 확장 API

각 마일스톤에는 새로운 제안 API가 포함되며 확장 작성자는 이를 시험해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 기다립니다. 제안된 API를 시험해 보려면 다음 단계를 따르세요.

  • 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
  • 확장의 package.json 파일에 이 줄이 있어야 합니다: "enableProposedApi": true.
  • 최신 버전의 vscode.proposed.d.ts 파일을 프로젝트로 복사하세요.

제안된 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환되지 않는 변경이 발생할 수 있으며 기존 확장에 문제가 발생하는 것을 원하지 않습니다.

SCM: 선택된 소스 제어

확장에서 사용자가 UI에서 보기 위해 선택한 소스 제어 인스턴스를 알 수 있도록 SourceControl 인스턴스에 selected 속성과 해당 상태를 나타내는 onDidChangeSelection 이벤트가 추가되었습니다.

export interface SourceControl {
  /**
   * Whether the source control is selected.
   */
  readonly selected: boolean;

  /**
   * An event signaling when the selection state changes.
   */
  readonly onDidChangeSelection: Event<boolean>;
}

주석 제공자

이번 반복에서는 확장이 편집기 내에서 대화를 생성하고 관리하며 새로운 **주석** 패널을 사용할 수 있도록 하는 주석 개념을 도입합니다. 이를 통해 확장은 코드 검토 시나리오를 지원할 수 있습니다.

주석은 스레드로 구성되며 특정 문서와 연결됩니다.

export enum CommentThreadCollapsibleState {
  Collapsed = 0,
  Expanded = 1
}

interface CommentThread {
  threadId: string;
  resource: Uri;
  range: Range;
  comments: Comment[];
  collapsibleState?: CommentThreadCollapsibleState;
}

interface Comment {
  commentId: string;
  body: MarkdownString;
  userName: string;
  gravatar: string;
  command?: Command;
}

주석을 표시하려면 확장 프로그램이 DocumentCommentProvider 또는 WorkspaceCommentProvider를 등록해야 합니다.

export interface CommentThreadChangedEvent {
  readonly added: CommentThread[];
  readonly removed: CommentThread[];
  readonly changed: CommentThread[];
}

interface CommentInfo {
  threads: CommentThread[];
  commentingRanges?: Range[];
}

interface DocumentCommentProvider {
  provideDocumentComments(
    document: TextDocument,
    token: CancellationToken
  ): Promise<CommentInfo>;
  createNewCommentThread(
    document: TextDocument,
    range: Range,
    text: string,
    token: CancellationToken
  ): Promise<CommentThread>;
  replyToCommentThread(
    document: TextDocument,
    range: Range,
    commentThread: CommentThread,
    text: string,
    token: CancellationToken
  ): Promise<CommentThread>;
  onDidChangeCommentThreads: Event<CommentThreadChangedEvent>;
}

interface WorkspaceCommentProvider {
  provideWorkspaceComments(token: CancellationToken): Promise<CommentThread[]>;
  onDidChangeCommentThreads: Event<CommentThreadChangedEvent>;
}

DocumentCommentProvider를 사용하여 열린 문서에 대한 주석을 반환할 수 있습니다. 주석을 제공할 때 확장은 문서의 현재 스레드와 새 주석을 추가할 수 있는 문서의 범위를 모두 지정합니다. 문서 내에서 주석을 추가하거나 답글을 달 수 있습니다.

A comment within an editor

WorkspaceCommentProvider가 처음 등록되면 주석 패널이 표시되고 제공된 모든 주석이 표시됩니다. 주석은 주석 스레드 및 리소스별로 그룹화됩니다. 패널에서 주석을 선택하면 command 주석이 실행되므로 확장 프로그램이 동작을 결정합니다.

Comments panel

미리보기 기능

미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.

Electron 3.0 탐색

이번 마일스톤 동안 VS Code에 Electron 3.0.0을 번들링하는 것을 탐색했습니다. 이것은 주요 Electron 릴리스이며 Chrome 66 및 Node.js 10.x(현재 Chrome 61 및 Node.js 8.x 버전과 비교하면 큰 도약)와 함께 제공됩니다. 가까운 시일 내에 Insiders 사용자에게 업데이트를 푸시하여 추가 피드백을 수집할 계획입니다. 도움이 되고 싶다면 VS Code Insiders를 설치하세요.

엔지니어링

확장 프로그램 및 webpack

이제 webpack을 사용하여 확장을 번들링합니다. 두 가지 성과를 달성할 수 있습니다. (1) 로드할 파일이 적고 파싱할 소스가 적기 때문에 확장 프로그램의 시작 시간을 줄이고, (2) 추출 및 디스크에 쓸 파일이 적기 때문에 설치 시간을 줄입니다. 지금까지 번들 크기를 약 4000개의 파일만큼 줄였습니다!

성능 캐너리

시작 성능이 저하되지 않도록 보장하기 위해 테스트 하네스를 추가했습니다. Insiders 빌드의 성능을 테스트하기 위해 배포할 수 있는 새 스크립트가 있습니다. 이 스크립트는 단순히 최신 빌드를 설치하고 시간 제한 내에 시작되는지 확인합니다. 현재는 Windows부터 시작했습니다. 성능은 종종 바이러스 백신 소프트웨어 업데이트에 영향을 받기 때문입니다. 그러나 지원하는 모든 플랫폼에서 테스트할 계획입니다.

IPC 스택 개선

자체 제작한 IPC 스택을 개선하여 프로세스 간에 바이트 버퍼 메시지를 지원합니다. 이를 통해 오버헤드 없이 서로 다른 프로세스 간에 이진 데이터를 보내는 것과 같은 특정 시나리오를 지원하고 성능을 위해 IPC를 최적화할 수 있습니다.

주요 수정 사항

  • 6363: 저장 시 대체 데이터 스트림이 제거됨
  • 25919: 새 창을 기본 탭으로 강제 열기 위한 새 명령
  • 49021: 저장 시 WSL 권한 메타데이터 재설정 안 함
  • 49403: 통합 터미널에서 디버깅 시 자동 연결 문제 발생
  • 55025: 확장 호스트가 다시 시작될 때 계속 디버그 허용
  • 56084: 열린 편집기: 시각적 순서에 따라 그룹 순서 재검토
  • 56691: 경로에 #이 포함된 경우 vscode 시작 오류
  • 57018: 디버거 중지/다시 시작 시 babel-node 중지 실패

감사합니다

마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.

vscode 기여

vscode-vsce 기여

vscode-eslint 기여

language-server-protocol 기여

vscode-languageserver-node에 기여

debug-adapter-protocol에 기여

vscode-css-languageservice에 대한 기여

vscode-html-languageservice에 대한 기여

vscode-json-languageservice 기여

node-jsonc-parser에 대한 기여

vscode-generator-code에 대한 기여

localization 기여

Transifex VS Code 프로젝트 팀에는 거의 1200명의 회원이 있으며 매달 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안 등 기여에 감사드립니다.

다음은 이번 릴리스의 기여자 스냅샷입니다. 프로젝트에 대한 자세한 내용은 기여자 이름 목록을 포함하여 프로젝트 사이트인 https://aka.ms/vscodeloc를 방문하십시오.

  • 불가리아어: Любомир Василев.
  • 크로아티아어: Nikša Mihaica.
  • 덴마크어: Christoffer Bech.
  • 영국 영어: Matthew John Cheetham, Swotboy2000.
  • 핀란드어: Petri Niinimäki, Feetu Nyrhinen, Jussi Palo.
  • 프랑스어: Antoine Griffard, Guillaume Bauer, Smrman.
  • 독일어: Carsten Siemens, Carsten Kneip, Jonas Droste, Markus Hatvan, Christian Studer, Peter Schneider, Jonas Keller, thefreshman89.
  • 헝가리어: Tar Dániel, Bence László.
  • 중국어(간체): Joel Yang, 子实 王, Wang Dongcheng, pluwen, DongWei, Henry Chu, aimin guo, Chris Pan 潘冬冬, 子昂 马.
  • 중국어(번체): Duran Hsieh, Winnie Lin, Poy Chang, Alan Tsai.
  • 인도네시아어: Wildan Mubarok, G-RiNe Project.
  • 이탈리아어: Luca Bruni, Alessandro Alpi, Andrea Dottor, Emanuele Curati, Riccardo Cappello, Gianluca Acerbis, Emilie Rollandin, Marco Dal Pino, Luigi Bruno, Lorthirk, Aldo Donetti.
  • 일본어: Shunya Tajima, Satoshi Kajiura, Yuichi Nukiyama, Hiroyuki Mori, yoshioms.
  • 한국어: 고경희, PaulNara, small snail, 황광진.
  • 리투아니아어: Tomas Cimermonas.
  • 폴란드어: Artur, hawkeye116477, Patryk Brejdak, Mateusz Gazdziak, Robert Skórski, Sebastian Baran.
  • 포르투갈어(브라질): Roberto Fonseca, Bruno Sonnino, Marcelo Fernandes, Lucas Miranda, João Mesquita, Danilo Dantas, Rodrigo Crespi, Arthur Bruel, Thiago Moreira de Souza Arrais, Otacilio Saraiva Maia Neto, Loiane Groner, Fabio Correia.
  • 포르투갈어(포르투갈): Richard Nunes, Daniel Correia, Tiago Costa.
  • 루마니아어: Bogdan Mateescu, Szauka.
  • 러시아어: Roman Slauta, Ivan Kuzmenko.
  • 스페인어: Alejandro Medina, José M. Aguilar, Roberto Fonseca, Javier Moreno, Andy Gonzalez, Alberto Poblacion, Nancy Todd, Antonio Sanmartín.
  • 텔루구어: Hari Jujjavarapu, Sridhar L.
© . This site is unofficial and not affiliated with Microsoft.