Example #1
0
        public override void AddItems(params string[] itemsFullPath)
        {
            if (itemsFullPath == null || itemsFullPath.Length == 0)
            {
                return;
            }

            var projectFileName = FindProject(GenContext.Current.ProjectPath);

            if (string.IsNullOrEmpty(projectFileName))
            {
                throw new Exception($"There is not project file in {GenContext.Current.ProjectPath}");
            }

            var msbuildProj = FakeMsBuildProject.Load(projectFileName);

            if (msbuildProj != null)
            {
                foreach (var item in itemsFullPath)
                {
                    msbuildProj.AddItem(item);
                }

                msbuildProj.Save();
            }
        }
Example #2
0
        public override void AddProjectToSolution(string projectFullPath)
        {
            var msbuildProj  = FakeMsBuildProject.Load(projectFullPath);
            var solutionFile = FakeSolution.Create(SolutionPath);

            solutionFile.AddProjectToSolution(msbuildProj.Name, msbuildProj.Guid, projectFullPath.EndsWith(".csproj", StringComparison.OrdinalIgnoreCase));
        }
Example #3
0
        private void AddReferencesToProjects(IEnumerable <ProjectReference> projectReferences)
        {
            var solution     = FakeSolution.LoadOrCreate(_platform, _language, SolutionPath);
            var projectGuids = solution.GetProjectGuids();

            var groupedReferences = projectReferences.GroupBy(n => n.Project, n => n);

            foreach (var project in groupedReferences)
            {
                var parentProject = FakeMsBuildProject.Load(project.Key);

                foreach (var referenceToAdd in project)
                {
                    var referenceProject = FakeMsBuildProject.Load(referenceToAdd.ReferencedProject);

                    var name = referenceProject.Name;
                    var guid = projectGuids[name];
                    if (guid == "{}")
                    {
                        guid = "{" + Guid.NewGuid().ToString() + "}";
                    }

                    parentProject.AddProjectReference(referenceToAdd.ReferencedProject, guid, name);
                }

                parentProject.Save();
            }
        }
Example #4
0
        private void AddNugetsForProject(string projectPath, IEnumerable <NugetReference> nugetReferences)
        {
            if (nugetReferences.Any())
            {
                if (_language == ProgrammingLanguages.Cpp)
                {
                    var packagesConfig = FakePackagesConfig.Load(Path.Combine(Path.GetDirectoryName(projectPath), "packages.config"));
                    var msbuildProj    = FakeMsBuildProject.Load(projectPath);

                    foreach (var nugetPackages in nugetReferences)
                    {
                        packagesConfig.AddNugetReference(nugetPackages);
                        msbuildProj.AddNugetImport(nugetPackages);
                    }

                    packagesConfig.Save();
                    msbuildProj.Save();
                }
                else
                {
                    var msbuildProj = FakeMsBuildProject.Load(projectPath);

                    foreach (var nugetPackages in nugetReferences)
                    {
                        msbuildProj.AddNugetReference(nugetPackages);
                    }

                    msbuildProj.Save();
                }
            }
        }
Example #5
0
        public override void AddProjectToSolution(string projectFullPath)
        {
            var msbuildProj  = FakeMsBuildProject.Load(projectFullPath);
            var solutionFile = FakeSolution.LoadOrCreate(_platform, SolutionPath);

            var projectRelativeToSolutionPath = projectFullPath.Replace(Path.GetDirectoryName(SolutionPath) + Path.DirectorySeparatorChar, string.Empty);

            solutionFile.AddProjectToSolution(_platform, msbuildProj.Name, msbuildProj.Guid, projectRelativeToSolutionPath);
        }
Example #6
0
        private void AddSdksForProject(string projectPath, IEnumerable <SdkReference> sdkReferences)
        {
            var project = FakeMsBuildProject.Load(projectPath);

            foreach (var referenceValue in sdkReferences)
            {
                project.AddSDKReference(referenceValue);
            }

            project.Save();
        }
Example #7
0
        private void AddNugetsForProject(string projectPath, IEnumerable <NugetReference> nugetReferences)
        {
            var msbuildProj = FakeMsBuildProject.Load(projectPath);

            foreach (var nugetPackages in nugetReferences)
            {
                msbuildProj.AddNugetReference(nugetPackages);
            }

            msbuildProj.Save();
        }
Example #8
0
        public override string GetActiveProjectTypeGuids()
        {
            var projectFileName = FindProject(GenContext.Current.DestinationPath);

            if (string.IsNullOrEmpty(projectFileName))
            {
                throw new Exception($"There is not project file in {GenContext.Current.DestinationPath}");
            }

            var msbuildProj = FakeMsBuildProject.Load(projectFileName);

            return(msbuildProj.ProjectTypeGuids);
        }
Example #9
0
        private void AddItems(string projectPath, IEnumerable <string> filesToAdd)
        {
            var msbuildProj = FakeMsBuildProject.Load(projectPath);

            if (msbuildProj != null)
            {
                foreach (var file in filesToAdd)
                {
                    msbuildProj.AddItem(file);
                }

                msbuildProj.Save();
            }
        }
Example #10
0
        public override Guid GetProjectGuidByName(string projectName)
        {
            var projectFileName = FindProject(GenContext.Current.DestinationPath);
            var msbuildProj     = FakeMsBuildProject.Load(projectFileName);
            var guid            = msbuildProj.Guid;

            if (string.IsNullOrEmpty(guid))
            {
                var solution = FakeSolution.LoadOrCreate(_platform, _language, SolutionPath);
                guid = solution.GetProjectGuids().First(p => p.Key == projectName).Value;
            }

            Guid.TryParse(guid, out Guid parsedGuid);
            return(parsedGuid);
        }
Example #11
0
        public override void AddContextItemsToSolution(ProjectInfo projectInfo)
        {
            var filesByProject = ResolveProjectFiles(projectInfo.ProjectItems);

            var filesForExistingProjects  = filesByProject.Where(k => !projectInfo.Projects.Any(p => p == k.Key));
            var nugetsForExistingProjects = projectInfo.NugetReferences.Where(n => !projectInfo.Projects.Any(p => p == n.Project)).GroupBy(n => n.Project, n => n);
            var sdksForExistingProjects   = projectInfo.SdkReferences.Where(n => !projectInfo.Projects.Any(p => p == n.Project)).GroupBy(n => n.Project, n => n);

            foreach (var files in filesForExistingProjects)
            {
                if (!IsCpsProject(files.Key))
                {
                    AddItems(files.Key, files.Value);
                }
            }

            foreach (var project in nugetsForExistingProjects)
            {
                AddNugetsForProject(project.Key, project);
            }

            foreach (var sdk in sdksForExistingProjects)
            {
                AddSdksForProject(sdk.Key, sdk);
            }

            foreach (var project in projectInfo.Projects)
            {
                var msbuildProj  = FakeMsBuildProject.Load(project);
                var solutionFile = FakeSolution.LoadOrCreate(_platform, _language, SolutionPath);

                var projectRelativeToSolutionPath = project.Replace(Path.GetDirectoryName(SolutionPath) + Path.DirectorySeparatorChar, string.Empty);

                var projGuid = !string.IsNullOrEmpty(msbuildProj.Guid) ? msbuildProj.Guid : Guid.NewGuid().ToString();

                solutionFile.AddProjectToSolution(_platform, _appModel, _language, msbuildProj.Name, projGuid, projectRelativeToSolutionPath, IsCpsProject(project), HasPlatforms(project));

                if (!IsCpsProject(project) && filesByProject.ContainsKey(project))
                {
                    AddItems(project, filesByProject[project]);
                }

                AddNugetsForProject(project, projectInfo.NugetReferences.Where(n => n.Project == project));
                AddSdksForProject(project, projectInfo.SdkReferences.Where(n => n.Project == project));
            }

            AddReferencesToProjects(projectInfo.ProjectReferences);
        }
Example #12
0
        public override void AddItems(params string[] itemsFullPath)
        {
            if (itemsFullPath == null || itemsFullPath.Length == 0)
            {
                return;
            }

            var filesByProject = ResolveProjectFiles(itemsFullPath, true);

            foreach (var projectFile in filesByProject)
            {
                var msbuildProj = FakeMsBuildProject.Load(projectFile.Key);
                if (msbuildProj != null)
                {
                    foreach (var file in projectFile.Value)
                    {
                        msbuildProj.AddItem(file);
                    }

                    msbuildProj.Save();
                }
            }
        }