Esempio n. 1
0
        private string ProjectName(string relativePath)
        {
            var match = regex.Match(relativePath);
            var directoryStructure = match.Groups[1].Value.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
            //var indexIfCSextension = fileName.LastIndexOf(@"\.cs", StringComparison.Ordinal);

            var projectName = "";

            projectName = projectName + directoryStructure[0];

            if (directoryStructure.Length == 1)
            {
                ;
            }
            else
            {
                projectName = projectName + "_" + directoryStructure[1];
            }


            var mksProjectFile = new MksProjectFile();

            mksProjectFile.Name = projectName;


            return(projectName);
        }
        //we need to split Common into 2 pieces
        //the first truly has no dependencies to outher projects
        //the second may.
        private void SplitMksCommonIntoPieces()
        {
            var common = _mksProjectFiles.FirstOrDefault(c => c.Name == "Common");

            var mksCommonBase = new MksProjectFile();

            foreach (var item in common.ProjectItems)
            {
                if (item.References.Any(c => c.StartsWith("MKS")) == false)
                {
                    mksCommonBase.ProjectItems.Add(item);
                }
            }

            foreach (var item in mksCommonBase.ProjectItems)
            {
                common.ProjectItems.Remove(item);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// This will seed the project item with the base template and compile files from source
        /// </summary>
        /// <param name="projectName"></param>
        /// <param name="projectItems"></param>
        /// <param name="targetDir"></param>
        private MksProjectFile GenerateProjectFile(GenerateProjectFileOptions generateProjectFileOptions)
        {
            var    projectSkeleton = generateProjectFileOptions.ProjectName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
            string projectName;

            if (projectSkeleton.Length == 2)
            {
                projectName = projectSkeleton[0];
            }
            else
            {
                projectName = projectSkeleton.ConcatToString("");
            }

            var subDir        = projectSkeleton.ConcatToString("\\");
            var fileName      = generateProjectFileOptions.ProjectName.ConcatToString("") + ".csproj";
            var fullNameSpace = generateProjectFileOptions.Prefix + (generateProjectFileOptions.Prefix.EndsWith(".") ? "" : ".") + projectSkeleton.ConcatToString(".");

            var newPath = Path.Combine(generateProjectFileOptions.TargetDir, subDir, fileName);

            var mksProjectFile = new MksProjectFile();

            mksProjectFile.AbsoluteTargetPath = newPath;

            mksProjectFile.FileName = fileName;
            var guidElement = _guidMap.FindMandatoryElementWithAttributeName("Project", "Name", projectName);
            var guid        = guidElement.Attribute("Guid").Value;

            mksProjectFile.Guid         = guid;
            mksProjectFile.Name         = projectName;
            mksProjectFile.NameSpace    = fullNameSpace;
            mksProjectFile.ProjectItems = generateProjectFileOptions.ProjectItems.Select(c => new MksProjectItem(mksProjectFile, c, Path.Combine(_sourceDir, c.EvaluatedInclude), c.EvaluatedInclude, _targetDir)).ToArray();
            var mksProjectFileXML = GenerateProjectXML(projectName, _guidMap, _template, fullNameSpace, mksProjectFile);

            mksProjectFile.XML = mksProjectFileXML;


            return(mksProjectFile);
        }
        private MksProjectFile ProjectNameFromPath(string relativePathToSourceProj)
        {
            var match = regex.Match(relativePathToSourceProj);
            var directoryStructure = match.Groups[1].Value.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
            //var indexIfCSextension = fileName.LastIndexOf(@"\.cs", StringComparison.Ordinal);



            var projectName = "";

            projectName = projectName + directoryStructure[0];

            if (directoryStructure.Length == 1 ||
                (directoryStructure.Length == 2 && directoryStructure[1].Contains(".cs")))
            {
                projectName = projectName + "_" +
                              FileWalker.CoreOrDupe(Path.Combine(_rootOfSourceDir, directoryStructure.ConcatToString("\\")),
                                                    _rootOfSourceDir, _rootOfTargetDir);
            }
            else
            {
                projectName = projectName + "_" + directoryStructure[1];
            }

            if (projectName.Contains('_') == false)
            {
            }

            var mksProjectFile = new MksProjectFile();

            mksProjectFile.Name               = projectName;
            mksProjectFile.RelativePath       = _rootOfSource + projectName.Replace("_", "\\").Trim();
            mksProjectFile.FileName           = projectName.Replace("_", "").Trim() + ".csproj";
            mksProjectFile.AbsoluteTargetPath = _rootOfTargetDir + projectName.Replace("_", "\\").Trim() + "\\" + mksProjectFile.FileName;

            return(mksProjectFile);
        }
Esempio n. 5
0
        /// <summary>
        /// This is called by GenerateProjectFile. It will use the path, xml and options passed int to create the phyisical file.
        /// </summary>
        /// <param name="guidMap"></param>
        /// <param name="template"></param>
        /// <param name="newPath"></param>
        /// <param name="fileName"></param>
        /// <param name="fullNameSpace"></param>
        private string GenerateProjectXML(string projectName, XElement guidMap, XDocument template, string nameSpace, MksProjectFile mksProjectFile)
        {
            var projFile    = template.CopyDoc();
            var guidElement = guidMap.FindMandatoryElementWithAttributeName("Project", "Name", projectName);
            var guid        = guidElement.Attribute("Guid").Value;

            projFile.Root.Descendants(XName.Get("ProjectGuid", projFile.Root.GetDefaultNamespace().NamespaceName)).First().SetValue(guid);
            projFile.Root.Descendants(XName.Get("RootNamespace", projFile.Root.GetDefaultNamespace().NamespaceName)).First().SetValue(nameSpace);
            projFile.Root.Descendants(XName.Get("AssemblyName", projFile.Root.GetDefaultNamespace().NamespaceName)).First().SetValue(projectName);

            return(projFile.ToString());
        }