/// <summary> /// Adds the project. /// </summary> /// <param name="path">The path.</param> /// <param name="projectInfo">The project information.</param> internal void AddProject( string path, ProjectTemplateInfo projectInfo) { string message = $"ProjectsService::AddProjectIf project {projectInfo.Name}"; TraceService.WriteLine(message); this.SettingsService.ActiveProject = projectInfo.FriendlyName; this.TryToAddProject(path, projectInfo); //// add reference to core project IProjectService coreProjectService = this.visualStudioService.CoreProjectService; IProjectService projectService = this.visualStudioService.GetProjectServiceBySuffix(projectInfo.ProjectSuffix); if (coreProjectService != null && projectService != null && projectInfo.ReferenceCoreProject) { if (projectService.Name != coreProjectService.Name) { projectService.AddProjectReference(coreProjectService); } else { TraceService.WriteError("Attemped to reference project to its self project=" + projectService.Name); } } //// now add references to xamarin forms if required. if (projectInfo.ReferenceXamarinFormsProject) { IProjectService formsProjectService = this.visualStudioService.XamarinFormsProjectService; if (formsProjectService != null && projectService != null) { if (projectService.Name != formsProjectService.Name) { projectService.AddProjectReference(formsProjectService); } else { TraceService.WriteError("Attemped to reference project to its self project=" + projectService.Name); } } } //// now add reference to the plaform project from the test platform project if (projectInfo.ReferencePlatformProject) { //// TODO : tidy this up a little bit! IProjectService platformProjectService = this.visualStudioService.GetProjectServiceBySuffix( projectInfo.ProjectSuffix.Replace(".Tests", string.Empty)); if (platformProjectService != null && projectService != null) { //// for some reason cant add project reference to windows store project !! //// as no one is developing mvvmcross windows store apps dont worry about it :-) try { projectService.AddProjectReference(platformProjectService); } catch (Exception exception) { TraceService.WriteError("Unable to add project reference to " + platformProjectService.Name + " exception=" + exception.Message); } } } if (projectInfo.ItemTemplates != null && projectInfo.ItemTemplates.Any() && projectService != null) { foreach (TextTemplateInfo textTemplateInfo in projectInfo.ItemTemplates) { textTemplateInfo.Tokens = this.tokensTranslator.Translate(projectService); } this.textTemplatingService.AddTextTemplates( "Adding items to project " + projectService.Name, projectInfo.ItemTemplates); } }