コード例 #1
0
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            base.Initialize();

            try
            {
                string localOptInRegKeyVsCurrent = VS14OptInRegKey;
                string localOptInRegKeyVsNext = VS15OptInRegKey;

                // modify the registry key path to account for OS architecture
                if (Environment.Is64BitOperatingSystem == false)
                {
                    localOptInRegKeyVsCurrent = localOptInRegKeyVsCurrent.Replace(@"\WOW6432Node", string.Empty);
                    localOptInRegKeyVsNext = localOptInRegKeyVsNext.Replace(@"\WOW6432Node", string.Empty);
                }

                // check registry for opt in accounting for null values if key doesn't exist
                int? vsCurrentOptIn = (int?)Registry.GetValue(localOptInRegKeyVsCurrent, OptInRegValue, 0);
                int? vsNextOptIn = (int?)Registry.GetValue(localOptInRegKeyVsNext, OptInRegValue, 0);
                int? userOptedIn = vsCurrentOptIn.GetValueOrDefault() + vsNextOptIn.GetValueOrDefault();

                int? microsoftInternalUser = (int?)Registry.GetValue(BuildMonitor.MsftInternalRegKey, BuildMonitor.MsftInternalRegValue, 0);
                microsoftInternalUser = microsoftInternalUser.GetValueOrDefault();

                if (!(userOptedIn == 0 && microsoftInternalUser == 0))
                {
                    DTE dte = GetService(typeof(SDTE)) as DTE;
                    if (dte == null)
                    {
                        throw new InvalidOperationException("No Visual Studio Desktop Environment service (SDTE) available!");
                    }

                    _buildEvents = dte.Events.BuildEvents;
                    _buildEvents.OnBuildBegin += ProcessBuildBeginEvents;
                    _buildEvents.OnBuildDone += ProcessBuildDoneEvents;

                    IVsSolution solution = (IVsSolution)GetService(typeof(SVsSolution));
                    if (solution == null)
                    {
                        throw new InvalidOperationException("No Visual Studio Solution service (SVsSolution) available!");
                    }

                    _eventProcessor = new BuildEventProcessor(dte, solution, (microsoftInternalUser != 0));
                }
            }
            catch { }
        }
コード例 #2
0
ファイル: BuildMonitor.cs プロジェクト: siwuxian/WinObjC
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            base.Initialize();

            try
            {
                string localOptInRegKeyVsCurrent = VS14OptInRegKey;
                string localOptInRegKeyVsNext = VS15OptInRegKey;

                // modify the registry key path to account for OS architecture
                if (Environment.Is64BitOperatingSystem == false)
                {
                    localOptInRegKeyVsCurrent = localOptInRegKeyVsCurrent.Replace(@"\WOW6432Node", string.Empty);
                    localOptInRegKeyVsNext = localOptInRegKeyVsNext.Replace(@"\WOW6432Node", string.Empty);
                }

                // check registry for opt in accounting for null values if key doesn't exist
                int? vsCurrentOptIn = (int?)Registry.GetValue(localOptInRegKeyVsCurrent, OptInRegValue, 0);
                int? vsNextOptIn = (int?)Registry.GetValue(localOptInRegKeyVsNext, OptInRegValue, 0);
                int? userOptedIn = vsCurrentOptIn.GetValueOrDefault() + vsNextOptIn.GetValueOrDefault();

                int? microsoftInternalUser = (int?)Registry.GetValue(BuildMonitor.MsftInternalRegKey, BuildMonitor.MsftInternalRegValue, 0);
                microsoftInternalUser = microsoftInternalUser.GetValueOrDefault();

                if (!(userOptedIn == 0 && microsoftInternalUser == 0))
                {
                    DTE dte = GetService(typeof(SDTE)) as DTE;
                    if (dte == null)
                    {
                        throw new InvalidOperationException("No Visual Studio Desktop Environment service (SDTE) available!");
                    }

                    _buildEvents = dte.Events.BuildEvents;
                    _buildEvents.OnBuildBegin += ProcessBuildBeginEvents;
                    _buildEvents.OnBuildDone += ProcessBuildDoneEvents;

                    IVsSolution solution = (IVsSolution)GetService(typeof(SVsSolution));
                    if (solution == null)
                    {
                        throw new InvalidOperationException("No Visual Studio Solution service (SVsSolution) available!");
                    }

                    _eventProcessor = new BuildEventProcessor(dte, solution, (microsoftInternalUser != 0));
                }
            }
            catch { }
        }