Пример #1
0
        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);
        }
Пример #2
0
        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);
        }