List <(int Offset, int Length, ReferenceUsage Usage)> FindReferences(string docString, MSBuildReferenceKind kind, object reference) { var textDoc = TextSourceFactory.CreateNewDocument(docString, null); var xmlParser = new XmlParser(new XmlRootState(), true); xmlParser.Parse(new StringReader(docString)); var xdoc = xmlParser.Nodes.GetRoot(); var doc = MSBuildTestHelpers.CreateEmptyDocument(); var parseContext = new MSBuildParserContext(new NullRuntimeInformation(), null, null, null, null, new PropertyValueCollector(false), null, null, default); var sb = new MSBuildSchemaBuilder(true, parseContext, null); sb.Run(xdoc, textDoc, doc); var functionTypeProvider = new RoslynFunctionTypeProvider(null); var collector = MSBuildReferenceCollector.Create(new MSBuildResolveResult { ReferenceKind = kind, Reference = reference, }, functionTypeProvider); collector.Run(xdoc, textDoc, doc); return(collector.Results); }
static MSBuildRootDocument ParseDoc(string contents, string filename = "myfile.csproj") { var runtimeInfo = new MSBuildEnvironmentRuntimeInformation(); var textSource = TextSourceFactory.CreateNewDocument(contents, filename); var schemaProvider = new MSBuildSchemaProvider(); var taskBuilder = new NoopTaskMetadataBuilder(); return(MSBuildRootDocument.Parse(textSource, null, schemaProvider, runtimeInfo, taskBuilder, default)); }
public Import ParseImport(Import import) { Token.ThrowIfCancellationRequested(); var xmlParser = new XmlParser(new XmlRootState(), true); ITextSource textSource; try { textSource = TextSourceFactory.CreateNewDocument(import.Filename); xmlParser.Parse(textSource.CreateReader()); } catch (Exception ex) { LoggingService.LogError("Unhandled error parsing xml document", ex); return(import); } var doc = xmlParser.Nodes.GetRoot(); import.Document = new MSBuildDocument(import.Filename, false); import.Document.Build(doc, textSource, this); import.Document.Schema = SchemaProvider.GetSchema(import.Filename, import.Sdk); return(import); }