public EnvDTEProjectName(EnvDTEProject envDTEProject) { FullName = envDTEProject.FullName; UniqueName = EnvDTEProjectUtility.GetUniqueName(envDTEProject); ShortName = EnvDTEProjectUtility.GetName(envDTEProject); CustomUniqueName = EnvDTEProjectUtility.GetCustomUniqueName(envDTEProject); }
public EnvDTEProjectName(EnvDTEProject envDTEProject) { Debug.Assert(ThreadHelper.CheckAccess()); FullName = envDTEProject.FullName; UniqueName = EnvDTEProjectUtility.GetUniqueName(envDTEProject); ShortName = EnvDTEProjectUtility.GetName(envDTEProject); CustomUniqueName = EnvDTEProjectUtility.GetCustomUniqueName(envDTEProject); }
/// <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 ProjectNames FromDTEProject(EnvDTE.Project dteProject) { if (dteProject == null) { throw new ArgumentNullException(nameof(dteProject)); } Debug.Assert(ThreadHelper.CheckAccess()); return(new ProjectNames( fullName: dteProject.FullName, uniqueName: EnvDTEProjectUtility.GetUniqueName(dteProject), shortName: EnvDTEProjectUtility.GetName(dteProject), customUniqueName: EnvDTEProjectUtility.GetCustomUniqueName(dteProject))); }
public static IMSBuildNuGetProjectSystem CreateMSBuildNuGetProjectSystem(EnvDTEProject envDTEProject, INuGetProjectContext nuGetProjectContext) { if (envDTEProject == null) { throw new ArgumentNullException("project"); } if (String.IsNullOrEmpty(envDTEProject.FullName)) { throw new InvalidOperationException( String.Format(CultureInfo.CurrentCulture, Strings.DTE_ProjectUnsupported, EnvDTEProjectUtility.GetName(envDTEProject))); } #if VS14 if (EnvDTEProjectUtility.SupportsINuGetProjectSystem(envDTEProject)) { throw new InvalidOperationException("Does not support INuGetProjectSystem"); } #endif var guids = VsHierarchyUtility.GetProjectTypeGuids(envDTEProject); if (guids.Contains(NuGetVSConstants.CppProjectTypeGuid)) // Got a cpp project { if (!EnvDTEProjectUtility.IsClr(envDTEProject)) { return(new NativeProjectSystem(envDTEProject, nuGetProjectContext)); } } // Try to get a factory for the project type guid foreach (var guid in guids) { IMSBuildNuGetProjectSystemThunk factory; if (_factories.TryGetValue(guid, out factory)) { return(factory(envDTEProject, nuGetProjectContext)); } } // Fall back to the default if we have no special project types return(new VSMSBuildNuGetProjectSystem(envDTEProject, nuGetProjectContext)); }
private void AddEnvDTEProjectToCache(EnvDTEProject envDTEProject) { if (!EnvDTEProjectUtility.IsSupported(envDTEProject)) { return; } EnvDTEProjectName oldEnvDTEProjectName; _nuGetAndEnvDTEProjectCache.TryGetProjectNameByShortName(EnvDTEProjectUtility.GetName(envDTEProject), out oldEnvDTEProjectName); EnvDTEProjectName newEnvDTEProjectName = _nuGetAndEnvDTEProjectCache.AddProject(envDTEProject, GetProjectFactory()); if (String.IsNullOrEmpty(DefaultNuGetProjectName) || newEnvDTEProjectName.ShortName.Equals(DefaultNuGetProjectName, StringComparison.OrdinalIgnoreCase)) { DefaultNuGetProjectName = oldEnvDTEProjectName != null ? oldEnvDTEProjectName.CustomUniqueName : newEnvDTEProjectName.ShortName; } }
private void AddEnvDTEProjectToCache(EnvDTEProject envDTEProject) { ThreadHelper.ThrowIfNotOnUIThread(); if (!EnvDTEProjectUtility.IsSupported(envDTEProject)) { return; } EnvDTEProjectName oldEnvDTEProjectName; _nuGetAndEnvDTEProjectCache.TryGetProjectNameByShortName(EnvDTEProjectUtility.GetName(envDTEProject), out oldEnvDTEProjectName); // Create the NuGet project first. If this throws we bail out and do not change the cache. var nuGetProject = GetProjectFactory().CreateNuGetProject(envDTEProject); // Then create the project name from the project. var newEnvDTEProjectName = new EnvDTEProjectName(envDTEProject); // Finally, try to add the project to the cache. var added = _nuGetAndEnvDTEProjectCache.AddProject(newEnvDTEProjectName, envDTEProject, nuGetProject); if (added) { // Emit project specific telemetry as we are adding the project to the cache. // This ensures we do not emit the events over and over while the solution is // open. NuGetProjectTelemetryService.Instance.EmitNuGetProject(envDTEProject, nuGetProject); } if (string.IsNullOrEmpty(DefaultNuGetProjectName) || newEnvDTEProjectName.ShortName.Equals(DefaultNuGetProjectName, StringComparison.OrdinalIgnoreCase)) { DefaultNuGetProjectName = oldEnvDTEProjectName != null ? oldEnvDTEProjectName.CustomUniqueName : newEnvDTEProjectName.ShortName; } }