2014-06-13 3 views
1

저는 Visual Studio에서 Workspace를 사용하여 roslyn과 함께 사용하려고합니다. How to get reference to 'Roslyn' Workspace object from IVsSolution?VisualStudioWorkspace에서 작업 영역을 가져 오는 방법은 무엇입니까?

내가 정확히 동일한 코드 작성 :

나는 이것처럼, 그것에 대해 몇 가지 주제를 발견

var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel)); 
var workspace = componentModel.GetService<Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace>(); 

을하지만이 오류가 ...

" 제약 조건과 일치하는 내보내기가 없습니다. ContractName Microsoft.CodeAnalysis.Workspace RequiredTypeIdentity Microsoft.CodeAnalysis.Wor kspace "

나는 정말로 무엇이 문제인지 이해하지 못한다.

답변

0

Roslyn 언어 서비스와 같은 사운드는 Visual Studio의 실험 버전에서 실행되지 않습니다. 여기에서 최종 사용자 미리보기를 다운로드해야합니다. http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx

실행해야하는 Roslyn Experimental Hive에 "Roslyn Preview 설치"라는 프로그램이 포함되어 있습니다.

실행중인 VSPackage에는 명령 줄 인수 "/ rootSuffix Roslyn"이 있어야합니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭 한 다음 "디버그"로 이동하여이를 설정할 수 있습니다.

<VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix> 

광산의 이전 문제에 대한 설명이있다 : 해결 Attach VsPackage to Roslyn Instance

+0

링크에서 모든 것을했는데 새로운 오류가 발생합니다. 'Microsoft.VisualStudio.LanguageServices.RislynVisualStudioWorkspace (ContractName = "Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace")'형식의 기본 수출 값을 'Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace'에 입력 할 수 없습니다. 나는 정말로 이해하지 못한다 .. – PasTeK

+0

그것은 기괴한 오류이고 Roslyn보다 MEF와 더 관련이있는 것으로 보인다. 그들은 비슷한 문제를 여기에 언급 : http://stackoverflow.com/a/14320296/300908 – JoshVarty

+0

내 솔루션의 모든 프로젝트에서 Roslyn했습니다. 그러나 나는 항상 같은 오류가 발생합니다. "ContractName과 일치하는 내보내기가 발견되지 않았습니다. ContractName Microsoft.CodeAnalysis.Workspace RequiredTypeIdentity Microsoft.CodeAnalysis.Workspace"Visual Studio에서 작업하고 VisualStudio에서/rootSuffix Roslyn을 사용하여 Editor VSPackage를 테스트합니다. 좋은 방법입니까? 나는 정말로 이해할 수 없다, 나는 당신의 모든 게시물을 따라하지만, 항상 오류가 발생했습니다. – PasTeK

0

문제

마지막으로, 당신은 .csproj XML 파일에 추가 속성을 포함해야합니다.

어셈블리 간의 충돌로 인해 문제가 발생했습니다.

내 프로젝트에는 Roslyn 어셈블리 버전 0.7.0이 있었지만 테스트 중에는 런타임시 Roslyn 버전 0.6.0이었습니다.

Visual Studio/rootSuffix에서 Roslyn Roslyn을 사용하는 각 프로젝트에서 <VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>. 모두 괜찮습니다.

관련 문제