public NonlockingHost GetHost(Version version = null) { Contract.Ensures(Contract.Result <NonlockingHost>() != null); //Are we given a verison? if (version == null) { VSServiceProvider.Current.Logger.WriteToLog("Unknown .NET framework version. Defaulting to no version."); return(CreateHost(null)); } Contract.Assume(this.VSOptionsPage != null); if (version.Major == 4) { if (version.Minor == 0) { if (_v4Host == null) { _v4Host = CreateHost(version); } return(_v4Host); } else if (version.Minor == 5) { if (_v45Host == null) { _v45Host = CreateHost(version); } return(_v45Host); } else { VSServiceProvider.Current.Logger.WriteToLog("Unsupported .NET framework version." + version.ToString()); return(CreateHost(null)); } } else if (version.Major < 4) { if (_v3Host == null) { _v3Host = CreateHost(version); } return(_v3Host); } else { VSServiceProvider.Current.Logger.WriteToLog("Unsupported .NET framework version." + version.ToString()); return(CreateHost(null)); } }
void SolutionClosed() { Logger.PublicEntry(() => { _solutionLoaded = false; _v3Host = null; _v4Host = null; ProjectTrackers.Clear(); if (_outputStream != null) { _outputStream.Flush(); _outputStream.Close(); _outputStream = null; //FilesNeedingNewSyntacticInfo.Clear(); //FilesNeedingNewSemanticInfo.Clear(); } }, "SolutionClosed"); }
private ProjectTracker(VSProject vsProject) { Contract.Requires(vsProject != null); Contract.Requires(vsProject.Project != null); Contract.Requires(ProjectIsAvailable(vsProject.Project)); //Keep a pointer to our project VS_Project = vsProject; EnvDTE_Project = vsProject.Project; Contract.Assume(EnvDTE_Project.Properties != null); //Get our name ProjectName = EnvDTE_Project.Name; UniqueProjectName = EnvDTE_Project.UniqueName; //Get our host Version frameworkVersion = null; frameworkVersion = GetTargetFramework(EnvDTE_Project); VSServiceProvider.Current.Logger.WriteToLog("fx version: " + frameworkVersion.ToString()); this._host = VSServiceProvider.Current.GetHost(frameworkVersion); //Eagerly add our project's references to the host's lib paths AddProjectReferencesPathsIntoHost(References, Host); //Subscribe to build events VSServiceProvider.Current.BuildBegin += OnBuildBegin; VSServiceProvider.Current.BuildDone += OnBuildDone; //Initialize build variables BuildNumber = 0; InBuild = false; //Get our assembly identity AssemblyIdentity = GetAssemblyIdentity(EnvDTE_Project, Host); //Set the contracts provider _contractsProvider = VSServiceProvider.Current.GetVersionedServicesFactory().CreateContractsProvider(this); }