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");
 }
示例#3
0
        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);
        }
    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);
    }