public static Tuple <TestWorkspace, EnvDTE.FileCodeModel> CreateWorkspaceAndFileCodeModel(string file) { var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(file, exportProvider: VisualStudioTestExportProvider.ExportProvider); try { var project = workspace.CurrentSolution.Projects.Single(); var document = project.Documents.Single().Id; var componentModel = new MockComponentModel(workspace.ExportProvider); var serviceProvider = new MockServiceProvider(componentModel); var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace); var state = new CodeModelState(serviceProvider, project.LanguageServices, visualStudioWorkspaceMock); var codeModel = FileCodeModel.Create(state, null, document, new MockTextManagerAdapter()).Handle; return(Tuple.Create(workspace, (EnvDTE.FileCodeModel)codeModel)); } catch { // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it workspace.Dispose(); throw; } }
public static Tuple <TestWorkspace, EnvDTE.FileCodeModel> CreateWorkspaceAndFileCodeModel(string file) { var workspace = TestWorkspace.CreateCSharp(file, exportProvider: VisualStudioTestExportProvider.Factory.CreateExportProvider()); try { var project = workspace.CurrentSolution.Projects.Single(); var document = project.Documents.Single().Id; var componentModel = new MockComponentModel(workspace.ExportProvider); var serviceProvider = new MockServiceProvider(componentModel); WrapperPolicy.s_ComWrapperFactory = MockComWrapperFactory.Instance; var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace); var threadingContext = workspace.ExportProvider.GetExportedValue <IThreadingContext>(); var state = new CodeModelState( threadingContext, serviceProvider, project.LanguageServices, visualStudioWorkspaceMock, new ProjectCodeModelFactory(visualStudioWorkspaceMock, serviceProvider, threadingContext)); var codeModel = FileCodeModel.Create(state, null, document, new MockTextManagerAdapter()).Handle; return(Tuple.Create(workspace, (EnvDTE.FileCodeModel)codeModel)); } catch { // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it workspace.Dispose(); throw; } }
public static Tuple<TestWorkspace, EnvDTE.FileCodeModel> CreateWorkspaceAndFileCodeModel(string file) { var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(file, exportProvider: VisualStudioTestExportProvider.ExportProvider); try { var project = workspace.CurrentSolution.Projects.Single(); var document = project.Documents.Single().Id; var componentModel = new MockComponentModel(workspace.ExportProvider); var serviceProvider = new MockServiceProvider(componentModel); WrapperPolicy.s_ComWrapperFactory = MockComWrapperFactory.Instance; var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace); var state = new CodeModelState(serviceProvider, project.LanguageServices, visualStudioWorkspaceMock); var codeModel = FileCodeModel.Create(state, null, document, new MockTextManagerAdapter()).Handle; return Tuple.Create(workspace, (EnvDTE.FileCodeModel)codeModel); } catch { // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it workspace.Dispose(); throw; } }
public static (TestWorkspace workspace, VisualStudioWorkspace extraWorkspaceToDisposeButNotUse, EnvDTE.FileCodeModel fileCodeModel) CreateWorkspaceAndFileCodeModel( string file ) { var workspace = TestWorkspace.CreateCSharp( file, composition: VisualStudioTestCompositions.LanguageServices ); try { var project = workspace.CurrentSolution.Projects.Single(); var document = project.Documents.Single().Id; var componentModel = new MockComponentModel(workspace.ExportProvider); var serviceProvider = new MockServiceProvider(componentModel); WrapperPolicy.s_ComWrapperFactory = MockComWrapperFactory.Instance; var visualStudioWorkspaceMock = new MockVisualStudioWorkspace(workspace); var threadingContext = workspace.ExportProvider.GetExportedValue <IThreadingContext>(); var notificationService = workspace.ExportProvider.GetExportedValue <IForegroundNotificationService>(); var listenerProvider = workspace.ExportProvider.GetExportedValue <AsynchronousOperationListenerProvider>(); var state = new CodeModelState( threadingContext, serviceProvider, project.LanguageServices, visualStudioWorkspaceMock, new ProjectCodeModelFactory( visualStudioWorkspaceMock, serviceProvider, threadingContext, notificationService, listenerProvider ) ); var codeModel = FileCodeModel.Create( state, null, document, new MockTextManagerAdapter() ).Handle; return(workspace, visualStudioWorkspaceMock, codeModel); } catch { // We threw during creation of the FileCodeModel. Make sure we clean up our workspace or else we leak it workspace.Dispose(); throw; } }