Visual Studio에 Go 언어 통합, 개발 생산성 향상에 기여할까?

by DD
2개월 전
조회수 16

Visual Studio에서 Go 코드 작업을 위해 확장 기능 개발(Extension Development)을 시작, 개발 환경 통합을 시도함

SDK 스타일 프로젝트(SDK-style Projects) 지원 및 통합 설정(Unified Settings) 도입 등 최신 개발 트렌드를 반영함

LSP(Language Server Protocol) 구현 과정에서 Visual Studio의 제한적인 기능 지원(Limited Feature Support)을 발견함

확장 기능 개발을 통해 코드 완성(Code Completion), 정의 이동, 참조 찾기 등 핵심 기능을 제공하며 개발 생산성 향상을 기대함

SDK 스타일 프로젝트(SDK-style Projects) 도입

개발자는 Visual Studio 확장 개발 시 SDK 스타일 프로젝트(SDK-style Projects)를 활용하여 프로젝트 관리 효율성을 높였다. 특히, `Microsoft.VisualStudio.Sdk.Build` SDK를 참조하고, `vs17.12`와 같은 `TargetFramework`를 지정하는 방식으로 최신 프로젝트 구조를 적용했다. 이는 기존의 복잡한 프로젝트 설정 방식을 개선하고, 빌드 프로세스(Build Process)를 단순화하는 데 기여한다.

통합 설정(Unified Settings) 적용

Visual Studio는 VS Code의 설정을 차용하여 통합 설정(Unified Settings)을 도입했다. 확장 기능 개발자는 이 설정을 통해 사용자 정의 설정을 관리하고, 사용자 경험을 향상시킬 수 있다. 하지만, 아직 문서화(Documentation)가 미흡하여 개발 과정에서 어려움이 있을 수 있다는 점이 지적된다. 이는 확장 기능 개발 시 설정 관리(Settings Management)의 복잡성을 증가시킬 수 있다.

LSP(Language Server Protocol) 구현 문제

Visual Studio의 LSP 구현은 Gopls와의 통신 과정에서 몇 가지 문제점을 드러냈다. 특히, `workspace.configuration` 요청을 지원하지 않아 Gopls가 일부 설정을 제대로 인식하지 못하는 문제가 발생했다. 이는 설정 동기화(Settings Synchronization)의 불일치를 초래하며, 개발 환경의 일관성을 저해할 수 있다. 개발자는 이러한 문제를 해결하기 위해 LSP 클라이언트(LSP Client)의 개선을 기다리고 있다.

확장 기능의 기능 및 개발 생산성 향상

개발팀은 Visual Studio 확장 기능을 통해 Go 코드에 대한 문맥 인식 구문 강조(Context-aware Syntax Highlighting), 코드 완성, 정의 이동, 참조 찾기, 이름 바꾸기 기능을 구현했다. 이를 통해 개발자는 여러 IDE를 오가는 번거로움 없이, 통합된 개발 환경(Unified Development Environment)에서 Go 코드를 효율적으로 작업할 수 있게 되었다. 이는 개발 생산성 향상에 기여할 수 있다.

Don’t shave that yak! (How we added Go to Visual Studio)