Exemplo n.º 1
0
        public bool IsCompatibleWith(MonoDevelop.Ide.Gui.Document document)
        {
            switch (AspNetAppProjectFlavor.DetermineWebSubtype(document.FileName))
            {
            case WebSubtype.WebForm:
            case WebSubtype.MasterPage:
            case WebSubtype.WebControl:
                break;

            default:
                return(false);
            }

            var clrVersion = ClrVersion.Net_2_0;
            var aspProj    = document.Project as DotNetProject;

            if (aspProj != null && aspProj.TargetFramework.ClrVersion != ClrVersion.Default)
            {
                clrVersion = aspProj.TargetFramework.ClrVersion;
            }

            foreach (var tbfa in ItemFilters)
            {
                ClrVersion filterVersion;
                switch (tbfa.FilterString)
                {
                case "ClrVersion.Net_1_1":
                    filterVersion = ClrVersion.Net_1_1;
                    break;

                case "ClrVersion.Net_2_0":
                    filterVersion = ClrVersion.Net_2_0;
                    break;

                case "ClrVersion.Net_4_0":
                    filterVersion = ClrVersion.Net_4_0;
                    break;

                default:
                    continue;
                }

                if (tbfa.FilterType == ToolboxItemFilterType.Require && filterVersion != clrVersion)
                {
                    return(false);
                }

                if (tbfa.FilterType == ToolboxItemFilterType.Prevent && filterVersion == clrVersion)
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 2
0
        public static ProjectFile GetDesignerFile(ProjectFile file)
        {
            var ext = file.Project.GetService <AspNetAppProjectFlavor> ();

            var type = AspNetAppProjectFlavor.DetermineWebSubtype(file.FilePath);

            if (type != WebSubtype.WebForm && type != WebSubtype.WebControl && type != WebSubtype.MasterPage)
            {
                return(null);
            }

            var dfName = ext.Project.LanguageBinding.GetFileName(file.FilePath + ".designer");

            return(ext.Project.Files.GetFile(dfName));
        }
        public override System.Threading.Tasks.Task <ParsedDocument> Parse(ParseOptions parseOptions, System.Threading.CancellationToken cancellationToken)
        {
            var info   = new WebFormsPageInfo();
            var errors = new List <Error> ();

            var parser = new XmlParser(
                new WebFormsRootState(),
                true
                );

            try {
                parser.Parse(parseOptions.Content.CreateReader());
            } catch (Exception ex) {
                LoggingService.LogError("Unhandled error parsing ASP.NET document '" + (parseOptions.FileName ?? "") + "'", ex);
                errors.Add(new Error(ErrorType.Error, "Unhandled error parsing ASP.NET document: " + ex.Message));
            }

            // get the errors from the StateEngine parser
            errors.AddRange(parser.Errors);

            // populating the PageInfo instance
            XDocument xDoc = parser.Nodes.GetRoot();

            info.Populate(xDoc, errors);

            var type = AspNetAppProjectFlavor.DetermineWebSubtype(parseOptions.FileName);

            if (type != info.Subtype)
            {
                if (info.Subtype == WebSubtype.None)
                {
                    errors.Add(new Error(ErrorType.Error, "File directive is missing", new DocumentLocation(1, 1)));
                }
                else
                {
                    type = info.Subtype;
                    errors.Add(new Error(ErrorType.Warning, "File directive does not match page extension", new DocumentLocation(1, 1)));
                }
            }

            var result = new WebFormsParsedDocument(parseOptions.FileName, type, info, xDoc);

            result.AddRange(errors);

            return(System.Threading.Tasks.Task.FromResult((ParsedDocument)result));
        }