public bool TryCreateNuGetProject(EnvDTE.Project dteProject, ProjectSystemProviderContext context, out NuGetProject result) { if (dteProject == null) { throw new ArgumentNullException(nameof(dteProject)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } ThreadHelper.ThrowIfNotOnUIThread(); result = null; var projectK = GetProjectKProject(dteProject); if (projectK == null) { return(false); } result = new ProjectKNuGetProject( projectK, dteProject.Name, EnvDTEProjectInfoUtility.GetCustomUniqueName(dteProject), VsHierarchyUtility.GetProjectId(dteProject)); return(true); }
public bool TryCreateNuGetProject( IVsProjectAdapter project, ProjectProviderContext context, bool forceProjectType, out NuGetProject result) { Assumes.Present(project); Assumes.Present(context); result = null; ThreadHelper.ThrowIfNotOnUIThread(); if (project.IsDeferred) { return(false); } var projectK = EnvDTEProjectUtility.GetProjectKPackageManager(project.Project); if (projectK == null) { return(false); } result = new ProjectKNuGetProject( projectK, project.ProjectName, project.CustomUniqueName, project.ProjectId); return(true); }
public NuGetProject CreateNuGetProject(EnvDTEProject envDTEProject, INuGetProjectContext nuGetProjectContext) { if (envDTEProject == null) { throw new ArgumentNullException(nameof(envDTEProject)); } if (nuGetProjectContext == null) { throw new ArgumentNullException(nameof(nuGetProjectContext)); } ThreadHelper.ThrowIfNotOnUIThread(); NuGetProject result = null; var projectK = GetProjectKProject(envDTEProject); if (projectK != null) { result = new ProjectKNuGetProject( projectK, envDTEProject.Name, EnvDTEProjectUtility.GetCustomUniqueName(envDTEProject), VsHierarchyUtility.GetProjectId(envDTEProject)); } else if ((result = GetMSBuildShellOutNuGetProject(envDTEProject)) != null) { // Use the NuGetProject result initialized in the condition. } else { var msBuildNuGetProjectSystem = MSBuildNuGetProjectSystemFactory.CreateMSBuildNuGetProjectSystem( envDTEProject, nuGetProjectContext); var isWebSite = msBuildNuGetProjectSystem is WebSiteProjectSystem; // Web sites cannot have project.json if (!isWebSite) { // Find the project file path var projectFilePath = EnvDTEProjectUtility.GetFullProjectPath(envDTEProject); if (!string.IsNullOrEmpty(projectFilePath)) { var msbuildProjectFile = new FileInfo(projectFilePath); var projectNameFromMSBuildPath = Path.GetFileNameWithoutExtension(msbuildProjectFile.Name); // Treat projects with project.json as build integrated projects // Search for projectName.project.json first, then project.json // If the name cannot be determined, search only for project.json string projectJsonPath = null; if (string.IsNullOrEmpty(projectNameFromMSBuildPath)) { projectJsonPath = Path.Combine(msbuildProjectFile.DirectoryName, ProjectJsonPathUtilities.ProjectConfigFileName); } else { projectJsonPath = ProjectJsonPathUtilities.GetProjectConfigPath(msbuildProjectFile.DirectoryName, projectNameFromMSBuildPath); } if (File.Exists(projectJsonPath)) { result = new BuildIntegratedProjectSystem( projectJsonPath, msbuildProjectFile.FullName, envDTEProject, msBuildNuGetProjectSystem, EnvDTEProjectUtility.GetCustomUniqueName(envDTEProject)); } } } // Create a normal MSBuild project if no project.json was found if (result == null) { var folderNuGetProjectFullPath = _packagesPath(); // Project folder path is the packages config folder path var packagesConfigFolderPath = EnvDTEProjectUtility.GetFullPath(envDTEProject); result = new VSMSBuildNuGetProject( envDTEProject, msBuildNuGetProjectSystem, folderNuGetProjectFullPath, packagesConfigFolderPath); } } return(result); }