Пример #1
0
        public static FileInfo GetXmlDocFile(Assembly assembly, XProject project)
        {
            if (String.IsNullOrEmpty(assembly.Location))
            {
                // Maybe we should have a default directory to look at, or a list of directories ??
                return(null);
            }
            string assemblyDirPath = Path.GetDirectoryName(assembly.Location);
            string fileName        = Path.GetFileNameWithoutExtension(assembly.Location) + ".xml";
            // First try at the same location as the Assembly
            FileInfo xmlFile = null;

            try
            {
                xmlFile = GetFallbackDirectories(CultureInfo.CurrentCulture)
                          .Select(dirName => CombinePath(assemblyDirPath, dirName, fileName))
                          .Select(filePath => new FileInfo(filePath))
                          .Where(file => file.Exists)
                          .First();
            }
            catch
            { }
            // Ok, search in the "Reference Assemblies" folder
            if (xmlFile == null)
            {
                //
                string dllFile           = Path.GetFileName(assembly.Location);
                List <AssemblyInfo> refs = project.AssemblyReferences;
                foreach (AssemblyInfo dllRef in refs)
                {
                    if (String.Equals(dllRef.DisplayName, dllFile, StringComparison.InvariantCultureIgnoreCase))
                    {
                        // Got it !!
                        assemblyDirPath = Path.GetDirectoryName(dllRef.FileName);
                        fileName        = Path.GetFileNameWithoutExtension(dllRef.DisplayName) + ".xml";
                        // So, xml file should be here
                        xmlFile = new FileInfo(Path.Combine(assemblyDirPath, fileName));
                        if (!xmlFile.Exists)
                        {
                            xmlFile = null;
                        }
                        break;
                    }
                }
            }
            //// References assemblies are in %ProgramFiles(x86)% on
            //// 64 bit machines
            //var programFiles = Environment.GetEnvironmentVariable("ProgramFiles(x86)");

            //if (string.IsNullOrEmpty(programFiles))
            //{
            //    // On 32 bit machines they are in %ProgramFiles%
            //    programFiles = Environment.GetEnvironmentVariable("ProgramFiles");
            //}

            //if (string.IsNullOrEmpty(programFiles))
            //{
            //    // Reference assemblies aren't installed
            //    return null;
            //}
            //String prefixPath = Path.Combine(programFiles, "Reference Assemblies", "Microsoft", "Framework", ".NETFramework");


            //xmlFile = new FileInfo( prefixPath );
            //if (!xmlFile.Exists)
            //    return null;
            return(xmlFile);
        }
Пример #2
0
        public void Keys_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.Keys);
        }
Пример #3
0
        static public bool GetMemberParameters(MemberInfo member, XProject project, IList <string> names, IList <string> descriptions)
        {
            Assembly declarationAssembly = null;

            //
            if (member is Type)
            {
                declarationAssembly = ((Type)member).Assembly;
            }
            else if (member.DeclaringType != null)
            {
                declarationAssembly = member.DeclaringType.Assembly;
            }
            else
            {
                return(false);
            }

            //
            var file = XSharpXMLDocTools.GetXmlDocFile(declarationAssembly, project);

            if (file == null)
            {
                return(false);
            }
            try
            {
                string prefix = "";
                string name   = "";
                switch (member.MemberType)
                {
                case MemberTypes.Method:
                    prefix = "M:";
                    name   = member.Name;
                    var mi = member as MethodInfo;
                    name += getParameterNames(mi.GetParameters(), member);
                    break;

                case MemberTypes.Constructor:
                    prefix = "M:";
                    name   = "#ctor";
                    var ci = member as ConstructorInfo;
                    name += getParameterNames(ci.GetParameters(), member);
                    break;
                }
                if (!string.IsNullOrEmpty(name))
                {
                    uint             id        = 0;
                    string           xml       = "";
                    int              numparams = 0;
                    IVsXMLMemberData data      = null;
                    var              result    = file.ParseMemberSignature(prefix + member.DeclaringType.FullName + "." + name, out id);
                    if (result >= 0 && id != 0)
                    {
                        result = file.GetMemberXML(id, out xml);
                    }
                    if (result >= 0 && !String.IsNullOrEmpty(xml))
                    {
                        result = file.GetMemberDataFromXML(xml, out data);
                    }
                    if (result >= 0 && data != null)
                    {
                        result = data.GetParamCount(out numparams);
                    }
                    if (result >= 0 && numparams != 0)
                    {
                        string paramName;
                        string paramDesc;
                        for (int i = 0; i < numparams; i++)
                        {
                            result = data.GetParamTextAt(i, out paramName, out paramDesc);
                            names.Add(paramName);
                            descriptions.Add(paramDesc);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                XSharpProjectPackage.Instance.DisplayOutPutMessage("Exception in XSharpXMLDocMember.GetDocSummary");
                XSharpProjectPackage.Instance.DisplayException(e);
                return(false);
            }
            return(true);
        }
Пример #4
0
        public void Implements_IImageCache_Interface()
        {
            var target = new XProject();

            Assert.True(target is IImageCache);
        }
Пример #5
0
        public void Inherits_From_ObservableResource()
        {
            var target = new XProject();

            Assert.True(target is ObservableResource);
        }
Пример #6
0
 protected void SetProperties(IEnumerable <KeyValuePair <string, string> > properties, string condition, string label)
 {
     properties.ForEach(p =>
                        XProject.AddPropertyGroup(label, condition).SetProperty(p.Key, p.Value)
                        );
 }
Пример #7
0
        /// <inheritdoc/>
        XProject IProjectFactory.GetProject()
        {
            var factory = this as IProjectFactory;
            var project = XProject.Create();

            // Group Libraries
            var glBuilder = project.GroupLibraries.ToBuilder();

            glBuilder.Add(XLibrary <XGroup> .Create("Default"));
            project.GroupLibraries = glBuilder.ToImmutable();

            project.SetCurrentGroupLibrary(project.GroupLibraries.FirstOrDefault());

            // Style Libraries
            var sgBuilder = project.StyleLibraries.ToBuilder();

            sgBuilder.Add(DefaultStyleLibrary());
            sgBuilder.Add(LinesStyleLibrary());
            sgBuilder.Add(TemplateStyleLibrary());
            project.StyleLibraries = sgBuilder.ToImmutable();

            project.SetCurrentStyleLibrary(project.StyleLibraries.FirstOrDefault());

            // Templates
            var templateBuilder = project.Templates.ToBuilder();

            templateBuilder.Add(factory.GetTemplate(project, "Empty"));
            templateBuilder.Add(CreateGridTemplate(this, project, "Grid"));
            project.Templates = templateBuilder.ToImmutable();

            project.SetCurrentTemplate(project.Templates.FirstOrDefault(t => t.Name == "Grid"));

            // Documents and Pages
            var document = factory.GetDocument(project, "Document");
            var page     = factory.GetPage(project, "Page");

            var pageBuilder = document.Pages.ToBuilder();

            pageBuilder.Add(page);
            document.Pages = pageBuilder.ToImmutable();

            var documentBuilder = project.Documents.ToBuilder();

            documentBuilder.Add(document);
            project.Documents = documentBuilder.ToImmutable();

            project.Selected = document.Pages.FirstOrDefault();

            // Databases
            var db             = XDatabase.Create("Db");
            var columnsBuilder = db.Columns.ToBuilder();

            columnsBuilder.Add(XColumn.Create(db, "Column0"));
            columnsBuilder.Add(XColumn.Create(db, "Column1"));
            db.Columns        = columnsBuilder.ToImmutable();
            project.Databases = project.Databases.Add(db);

            project.SetCurrentDatabase(db);

            return(project);
        }
Пример #8
0
        public void Templates_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.Templates);
        }
Пример #9
0
        public void Documents_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.Documents);
        }
Пример #10
0
        public void GroupLibraries_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.GroupLibraries);
        }
Пример #11
0
        public void Databases_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.Databases);
        }
Пример #12
0
        public void StyleLibraries_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.StyleLibraries);
        }
Пример #13
0
        public void Options_Not_Null()
        {
            var target = new XProject();

            Assert.NotNull(target.Options);
        }
Пример #14
0
        public void Inherits_From_Selectable()
        {
            var target = new XProject();

            Assert.True(target is XSelectable);
        }
Пример #15
0
        static public string GetMemberSummary(IXMember member, XProject project, out string returns, out string remarks)
        {
            string summary = null;

            returns = remarks = "";
            if (member == null)
            {
                return("");
            }

            //
            if (member is XMemberDefinition)
            {
                var xdef  = (XMemberDefinition)member;
                var xml   = xdef.XmlComments;
                var xfile = XSharpXMLDocTools.firstfile;
                if (xfile != null && !string.IsNullOrEmpty(xml))
                {
                    summary = getSummary(xfile, xml, out returns, out remarks);
                }
                return(summary);
            }
            if (!(member is XMemberReference))
            {
                return("");
            }

            var xmember             = (XMemberReference)member;
            var declarationAssembly = xmember.Assembly;

            //
            var file = XSharpXMLDocTools.GetXmlDocFile(declarationAssembly, project);

            if (file == null)
            {
                return(null);
            }
            lastfile = file;
            var sig = xmember.XMLSignature;

            try
            {
                if (!string.IsNullOrEmpty(sig))
                {
                    uint   id     = 0;
                    string xml    = "";
                    var    result = file.ParseMemberSignature(sig, out id);

                    result = file.GetMemberXML(id, out xml);
                    if (!string.IsNullOrEmpty(xml))
                    {
                        summary = getSummary(file, xml, out returns, out remarks);
                    }
                }
            }
            catch (Exception e)
            {
                XSharpProjectPackage.Instance.DisplayOutPutMessage("Exception in XSharpXMLDocMember.GetDocSummary");
                XSharpProjectPackage.Instance.DisplayException(e);
            }
            //
            return(summary);
        }
Пример #16
0
        /// <inheritdoc/>
        XDocument IProjectFactory.GetDocument(XProject project, string name)
        {
            var document = XDocument.Create(name);

            return(document);
        }
Пример #17
0
        static public string GetMemberSummary(MemberInfo member, XProject project)
        {
            string   summary             = null;
            Assembly declarationAssembly = null;

            //
            if (member is Type)
            {
                declarationAssembly = ((Type)member).Assembly;
            }
            else if (member.DeclaringType != null)
            {
                declarationAssembly = member.DeclaringType.Assembly;
            }
            else
            {
                return(summary);
            }

            //
            var file = XSharpXMLDocTools.GetXmlDocFile(declarationAssembly, project);

            if (file == null)
            {
                return(null);
            }
            try
            {
                string prefix = "";
                string name   = "";
                switch (member.MemberType)
                {
                case MemberTypes.Field:
                    prefix = "F:";
                    name   = member.Name;
                    break;

                case MemberTypes.Property:
                    prefix = "P:";
                    name   = member.Name;
                    break;

                case MemberTypes.Method:
                    prefix = "M:";
                    name   = member.Name;
                    var mi = member as MethodInfo;
                    name += getParameterNames(mi.GetParameters(), member);
                    break;

                case MemberTypes.Constructor:
                    prefix = "M:";
                    name   = "#ctor";
                    var ci = member as ConstructorInfo;
                    name += getParameterNames(ci.GetParameters(), member);
                    break;

                case MemberTypes.Event:
                    prefix = "E:";
                    name   = member.Name;
                    break;
                }
                if (!string.IsNullOrEmpty(name))
                {
                    uint             id   = 0;
                    string           xml  = "";
                    IVsXMLMemberData data = null;
                    var result            = file.ParseMemberSignature(prefix + member.DeclaringType.FullName + "." + name, out id);
                    if (result >= 0 && id != 0)
                    {
                        result = file.GetMemberXML(id, out xml);
                    }
                    if (result >= 0 && !String.IsNullOrEmpty(xml))
                    {
                        result = file.GetMemberDataFromXML(xml, out data);
                    }
                    if (result >= 0 && data != null)
                    {
                        result = data.GetSummaryText(out summary);
                    }
                }
                if (string.IsNullOrWhiteSpace(summary) && member is ConstructorInfo)
                {
                    summary = GetTypeSummary(member.DeclaringType, project);
                }
            }
            catch (Exception e)
            {
                XSharpProjectPackage.Instance.DisplayOutPutMessage("Exception in XSharpXMLDocMember.GetDocSummary");
                XSharpProjectPackage.Instance.DisplayException(e);
            }
            //
            return(summary);
        }
Пример #18
0
 public XProject Save([FromBody] XProject project)
 {
     Contract.Requires(project != null);
     return(projectEngine.Save(project));
 }