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(); } }
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)); }
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(); } }
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(); } } }
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); }
private void AddSdksForProject(string projectPath, IEnumerable <SdkReference> sdkReferences) { var project = FakeMsBuildProject.Load(projectPath); foreach (var referenceValue in sdkReferences) { project.AddSDKReference(referenceValue); } project.Save(); }
private void AddNugetsForProject(string projectPath, IEnumerable <NugetReference> nugetReferences) { var msbuildProj = FakeMsBuildProject.Load(projectPath); foreach (var nugetPackages in nugetReferences) { msbuildProj.AddNugetReference(nugetPackages); } msbuildProj.Save(); }
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); }
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(); } }
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); }
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); }
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(); } } }