2017-11-21 3 views
0

Roslyn과 함께 Visual Studio 솔루션을 열어 프로젝트 및 문서를 반복하려고합니다. 나는 무엇이든 쓰고 싶지 않다. NewSolution.Projects.count 아래의 코드는 항상 0입니다. 결국 중요한 것은 각 문서에 대한 SemanticModel을 얻고 자합니다.Roslyn을 사용하여 Visual Studio 솔루션 열기

Const SolutionPartialPath As String = "Visual Studio 2017\Projects\roslyn-master\src\Samples\Samples.sln" 
    <TestMethod()> Public Sub UnitTest1() 

     Dim myDoc As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments 
     Dim SampleSolutionPath As String = Path.Combine(myDoc, SolutionPartialPath) 

     Dim WS As AdhocWorkspace = New AdhocWorkspace() 
     Dim SolInfo As SolutionInfo = SolutionInfo.Create(SolutionId.CreateNewId, VersionStamp.Create, SampleSolutionPath) 
     Dim NewSolution As Solution = WS.AddSolution(SolInfo) 

     For Each project As Project In NewSolution.Projects 
      Debug.WriteLine(project.Name) 
      If project.Name = "BasicAnalyzers" Then 
       For Each document In project.Documents 
        Debug.WriteLine(document.Name) 
        ProcessOneFile(document) 
       Next document 
      End If 
     Next project 
    End Sub 

답변

2

실제로 기존 솔루션 파일을 열지 않았습니다. SolutionInfo.FilePath은 솔루션을 식별하고 상대 경로를 확인하는 데 사용되지만 실제로 디스크에서 아무 것도 읽지 않습니다 (특히 핵심 Workspaces API는 특정 파일 형식에 대해 알지 못합니다).

.sln 파일과 MSBuild 기반 .cs-proj 파일을 읽으려면 MSBuildWorkspace이 필요합니다.

+0

감사합니다. 솔루션을 열어서 프로젝트를 반복 할 수 있지만 문서가 없습니다. WS.OpenProjectAsync (project.FilePath) .Result를 보았지만 이미 Workspace에있는 Document에 대한 오류가 발생했습니다. –

+0

프로그램이 올바른 것처럼 보입니다. 문제는 "SDK 'Microsoft.NET.Sdk'을 (를) 찾을 수 없습니다." AddHandler MS_Workspace.WorkspaceFailed, Sub (보낸 사람 Object, e As WorkspaceDiagnosticEventArgs)를 추가하지 않으면 표시되지 않습니다. 이제 그 문제를 해결해야합니다. –

관련 문제