/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/VisualStudio/Core/Test/ObjectBrowser/AbstractObjectBrowserTests.vb
75 строк
4 KB
Jason Malinowski
Make the fetch of the VisualStudioWorkspace lazy in ObjectBrowser
21 мар 2026, 02:55
21 мар 2026, 02:55
48c00dc
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System.Runtime.ExceptionServices Imports Microsoft.CodeAnalysis.Test.Utilities Imports Microsoft.VisualStudio.ComponentModelHost Imports Microsoft.VisualStudio.LanguageServices.Implementation.Library.ObjectBrowser Imports Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel Imports Microsoft.VisualStudio.LanguageServices.UnitTests.CodeModel.Mocks Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.ObjectBrowser <[UseExportProvider]> Public MustInherit Class AbstractObjectBrowserTests Protected MustOverride ReadOnly Property LanguageName As String Protected Function GetWorkspaceDefinition(code As XElement) As XElement Return <Workspace> <Project Language=<%= LanguageName %> CommonReferences="true"> <Document><%= code.Value.Trim() %></Document> </Project> </Workspace> End Function Protected Function GetWorkspaceDefinition(code As XElement, metaDataCode As XElement, commonReferences As Boolean) As XElement Return <Workspace> <Project Language=<%= LanguageName %> CommonReferences=<%= commonReferences %>> <Document><%= code.Value.Trim() %></Document> <MetadataReferenceFromSource Language=<%= LanguageName %> CommonReferences="true"> <Document><%= metaDataCode.Value.Trim() %></Document> </MetadataReferenceFromSource> </Project> </Workspace> End Function <HandleProcessCorruptedStateExceptions()> Friend Function CreateLibraryManager(definition As XElement) As TestState Dim workspace = EditorTestWorkspace.Create(definition, composition:=CodeModelTestHelpers.Composition) Dim result As TestState = Nothing Try Dim vsWorkspace = New MockVisualStudioWorkspace(workspace.ExportProvider) vsWorkspace.SetWorkspace(workspace) Dim mockComponentModel = New MockComponentModel(workspace.ExportProvider) mockComponentModel.ProvideService(Of VisualStudioWorkspace)(vsWorkspace) Dim mockServiceProvider = workspace.ExportProvider.GetExportedValue(Of MockServiceProvider) Dim libraryManager = CreateLibraryManager(mockServiceProvider, mockComponentModel) result = New TestState(workspace, vsWorkspace, libraryManager) Finally If result Is Nothing Then workspace.Dispose() End If End Try Return result End Function Friend MustOverride Function CreateLibraryManager(serviceProvider As IServiceProvider, componentModel As IComponentModel) As AbstractObjectBrowserLibraryManager Friend Function ProjectNode(name As String) As NavInfoNodeDescriptor Return New NavInfoNodeDescriptor With {.Kind = ObjectListKind.Projects, .Name = name} End Function Friend Function NamespaceNode(name As String) As NavInfoNodeDescriptor Return New NavInfoNodeDescriptor With {.Kind = ObjectListKind.Namespaces, .Name = name} End Function Friend Function TypeNode(name As String) As NavInfoNodeDescriptor Return New NavInfoNodeDescriptor With {.Kind = ObjectListKind.Types, .Name = name} End Function End Class End Namespace