コード例 #1
0
        /// <summary>
        /// Analyze projects belong to a solution
        /// </summary>
        /// <param name="idSoln"></param>
        /// <param name="solnPath"></param>
        /// <param name="errorText"></param>
        /// <returns></returns>
        public bool Analyzeprojects(ref string errorText)
        {
            errorText = "";
            Hashtable prjsdetailsinsoln = new Hashtable();
            string tmpxmlfileforsolndata;

            string tmpsolndata = @"c:\tempsoln.xml";
            string solnname = Path.GetFileNameWithoutExtension(_solnPath);

            if (Directory.Exists(@"C:\" + solnname))
            {
                Directory.Delete(@"C:\" + solnname, true);
            }
            Directory.CreateDirectory(@"C:\" + solnname);
            
            if (!System.IO.File.Exists(tmpsolndata))
            {
                System.IO.File.Create(tmpsolndata);
            }
            string solncontents = "";
            StreamReader solnreader = new StreamReader(_solnPath.Trim());

            while (solncontents != null)
            {
                solncontents = solnreader.ReadLine();
                if (solncontents != null)
                {
                    try
                    {
                        if (solncontents.StartsWith("Project"))
                        {
                            string[] prjprops = solncontents.Split(',');
                            string prjdispname = prjprops[0].Substring(prjprops[0].LastIndexOf("=") + 1).Replace("\"", "").Trim();
                            string prjpath1 = prjprops[1].ToString().Replace("\"", "").Trim();
                            prjsdetailsinsoln.Add(prjdispname, prjpath1);
                        }
                    }
                    catch (Exception ex)
                    {
                        errorText = ex.Message;
                        return false;
                    }
                }
            }

            IDictionaryEnumerator enprj = prjsdetailsinsoln.GetEnumerator();
            var lstCSFile = new List<string>();
            while (enprj.MoveNext())
            {
                // Init new project
                string strprjname = enprj.Key.ToString();
                var _project = new ProjStructure
                {
                    Name = strprjname,
                    Classes = new List<ClassStructure>()
                };
                _solStructure.Projects.Add(_project);
                //////////////////////// E ////////////////////////////
                if (enprj.Value.ToString().IndexOf("http://") == -1 && enprj.Value.ToString().EndsWith(".csproj"))
                {
                    string prjpath = _solnPath.Substring(0, _solnPath.LastIndexOf(@"\") + 1) + enprj.Value.ToString();
                    if (System.IO.File.Exists(prjpath))
                    {
                        StreamReader prjreader = new StreamReader(prjpath);
                        string prjcontents = prjreader.ReadToEnd();
                        prjreader.Close();
                        // Replace project
                        var indexStart = prjcontents.IndexOf("<Project");
                        var indexEnd = prjcontents.IndexOf(">", indexStart);
                        var oldProject = prjcontents.Substring(indexStart, indexEnd - indexStart + 1);
                        prjcontents = prjcontents.Replace(oldProject, "<Project>");
                        //Format Project File into XML file...
                        tmpxmlfileforsolndata = @"C:\" + solnname + "\\" + enprj.Key.ToString() + ".xml";
                        if (prjcontents.Length != 0)
                        {
                            StreamWriter solntoxmlconverter = new StreamWriter(tmpxmlfileforsolndata, false);
                            solntoxmlconverter.Write(prjcontents);
                            solntoxmlconverter.Close();
                        }
                        else
                        {
                            errorText = "Selected Project File is empty...";
                            return false;
                        }

                        ////To Load all items of the Project into the Treeview...
                        XPathDocument prjfile = new XPathDocument(tmpxmlfileforsolndata);
                        XPathNavigator nav = prjfile.CreateNavigator();

                        //TO Load all Class files of the selected Project...
                        XPathNodeIterator csfileiterator = nav.Select("/Project/ItemGroup/Compile");
                        lstCSFile.Clear();
                        LoadSelectedDetails("cs", csfileiterator, strprjname, ref lstCSFile);
                        if (lstCSFile.Count > 0)
                        {
                            // Loop through files with cs extension
                            for (int i = 0; i < lstCSFile.Count; i++)
                            {
                                //Get component of cs file include classes, methods
                                Dictionary<string, ClassStructure> dictClass = null;
                                if (GetCompsOfProjects(lstCSFile[i], ref dictClass, ref errorText))
                                {
                                    if (dictClass.Count > 0)
                                    {
                                        for (int j = 0; j < dictClass.Count; j++)
                                        {
                                            int index = -1;
                                            // Checking if obtained class which is exist on list of classes of project 
                                            if (!IsExistClass(_project.Classes, dictClass.Values.ElementAt(j), ref index))
                                            {
                                                dictClass.Values.ElementAt(j).ClassPath = lstCSFile[i];
                                                _project.Classes.Add(dictClass.Values.ElementAt(j));
                                            }
                                            else
                                            {
                                                // Obtained class is exist, just add methods of obtained class to class of project
                                                for (int k = 0; k < dictClass.Values.ElementAt(j).Methods.Count; k++)
                                                {
                                                    _project.Classes[index].Methods.Add(dictClass.Values.ElementAt(j).Methods[k]);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return true;
        }
コード例 #2
0
 public ProjStructure BuildProject(PROJECT proj)
 {
     var projStr = new ProjStructure
     {
         Name = proj.TenProject,
         Classes = new List<ClassStructure>()
     };
     foreach (var _class in proj.CLASSES)
     {
         var classStr = BuildClass(_class);
         projStr.Classes.Add(classStr);
     }
     return projStr;
 }
コード例 #3
0
 public void Insert_Project(int solnID, ProjStructure projStr)
 {
     var _proj = InsertPROJECTS(solnID, projStr.Name);
     if (_proj != null)
     {
         for (int i = 0; i < projStr.Classes.Count; i++)
         {
             Insert_Class(_proj.ID, projStr.Classes[i]);
         }
     }
 }