/// <summary> /// Factory method initializing instance of <see cref="ProjectNames"/> with values retrieved from a DTE project. /// </summary> /// <param name="dteProject">DTE project to get project names for.</param> /// <returns>New instance of <see cref="ProjectNames"/>.</returns> public static async Task <ProjectNames> FromDTEProjectAsync(EnvDTE.Project dteProject) { Assumes.Present(dteProject); await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); return(new ProjectNames( fullName: dteProject.FullName, uniqueName: EnvDTEProjectInfoUtility.GetUniqueName(dteProject), shortName: EnvDTEProjectInfoUtility.GetName(dteProject), customUniqueName: await EnvDTEProjectInfoUtility.GetCustomUniqueNameAsync(dteProject))); }
/// <summary> /// Factory method initializing instance of <see cref="ProjectNames"/> with values retrieved from a DTE project. /// </summary> /// <param name="dteProject">DTE project to get project names for.</param> /// <returns>New instance of <see cref="ProjectNames"/>.</returns> public static async Task <ProjectNames> FromDTEProjectAsync(EnvDTE.Project dteProject) { Assumes.Present(dteProject); ThreadHelper.ThrowIfNotOnUIThread(); return(new ProjectNames( fullName: dteProject.FullName, uniqueName: EnvDTEProjectInfoUtility.GetUniqueName(dteProject), shortName: EnvDTEProjectInfoUtility.GetName(dteProject), customUniqueName: await EnvDTEProjectInfoUtility.GetCustomUniqueNameAsync(dteProject))); }
private async Task <object> MigrateProjectToPackageRefAsync(string projectUniqueName) { await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var project = _solutionManager.Value.GetDTEProject(projectUniqueName); if (project == null) { throw new InvalidOperationException(string.Format(VsResources.Error_ProjectNotInCache, projectUniqueName)); } var projectSafeName = await EnvDTEProjectInfoUtility.GetCustomUniqueNameAsync(project); var nuGetProject = _solutionManager.Value.GetNuGetProject(projectSafeName); // If the project already has PackageReference, do nothing. if (nuGetProject is LegacyCSProjPackageReferenceProject) { return(new VsProjectJsonToPackageReferenceMigrateResult(success: true, errorMessage: null)); } try { _solutionManager.Value.SaveProject(nuGetProject); var legacyPackageRefBasedProject = new LegacyCSProjPackageReferenceProject( new EnvDTEProjectAdapter(project), VsHierarchyUtility.GetProjectId(project)); await ProjectJsonToPackageRefMigrator.MigrateAsync( legacyPackageRefBasedProject, legacyPackageRefBasedProject.MSBuildProjectPath); var result = new VsProjectJsonToPackageReferenceMigrateResult(success: true, errorMessage: null); _solutionManager.Value.SaveProject(nuGetProject); await _solutionManager.Value.UpdateNuGetProjectToPackageRef(nuGetProject); return(result); } catch (Exception ex) { // reload the project in memory from the file on disk, discarding any changes that might have // been made as a result of an incomplete migration. ReloadProject(project); return(new VsProjectJsonToPackageReferenceMigrateResult(success: false, errorMessage: ex.Message)); } }
/// <summary> /// Factory method initializing instance of <see cref="ProjectNames"/> with values retrieved from a DTE project. /// </summary> /// <param name="dteProject">DTE project to get project names for.</param> /// <returns>New instance of <see cref="ProjectNames"/>.</returns> public static async Task <ProjectNames> FromDTEProjectAsync(EnvDTE.Project dteProject, IVsSolution5 vsSolution5) { Assumes.Present(dteProject); await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var fullname = dteProject.FullName; var uniqueName = EnvDTEProjectInfoUtility.GetUniqueName(dteProject); var shortName = EnvDTEProjectInfoUtility.GetName(dteProject); var customUniqueName = await EnvDTEProjectInfoUtility.GetCustomUniqueNameAsync(dteProject); var projectId = GetProjectGuid(fullname, vsSolution5); return(new ProjectNames( fullName: fullname, uniqueName: uniqueName, shortName: shortName, customUniqueName: customUniqueName, projectId: projectId)); }