示例#1
0
        public VsSolutionRestoreService(
            IProjectSystemCache projectSystemCache,
            ISolutionRestoreWorker restoreWorker,
            [Import("VisualStudioActivityLogger")]
            NuGet.Common.ILogger logger)
        {
            if (projectSystemCache == null)
            {
                throw new ArgumentNullException(nameof(projectSystemCache));
            }

            if (restoreWorker == null)
            {
                throw new ArgumentNullException(nameof(restoreWorker));
            }

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _projectSystemCache = projectSystemCache;
            _restoreWorker      = restoreWorker;
            _logger             = logger;
        }
示例#2
0
 public VsSolutionRestoreService(
     IProjectSystemCache projectSystemCache,
     ISolutionRestoreWorker restoreWorker,
     [Import("VisualStudioActivityLogger")]
     ILogger logger)
 {
     _projectSystemCache = projectSystemCache ?? throw new ArgumentNullException(nameof(projectSystemCache));
     _restoreWorker      = restoreWorker ?? throw new ArgumentNullException(nameof(restoreWorker));
     _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 internal VsSolutionRestoreService(
     IProjectSystemCache projectSystemCache,
     ISolutionRestoreWorker restoreWorker,
     ILogger logger,
     Microsoft.VisualStudio.Threading.AsyncLazy <IVsSolution2> vsSolution2)
 {
     _projectSystemCache = projectSystemCache ?? throw new ArgumentNullException(nameof(projectSystemCache));
     _restoreWorker      = restoreWorker ?? throw new ArgumentNullException(nameof(restoreWorker));
     _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
     _vsSolution2        = vsSolution2 ?? throw new ArgumentNullException(nameof(vsSolution2));
 }
 public VsSolutionRestoreService(
     IProjectSystemCache projectSystemCache,
     ISolutionRestoreWorker restoreWorker,
     [Import(nameof(VisualStudioActivityLogger))]
     ILogger logger,
     [Import(typeof(SAsyncServiceProvider))]
     IAsyncServiceProvider serviceProvider
     )
     : this(
         projectSystemCache,
         restoreWorker,
         logger,
         new Microsoft.VisualStudio.Threading.AsyncLazy <IVsSolution2>(() => serviceProvider.GetServiceAsync <SVsSolution, IVsSolution2>(), NuGetUIThreadHelper.JoinableTaskFactory))
 {
 }
            public static RestoreTask Start(ISolutionRestoreWorker worker, bool forceRestore)
            {
                var cts  = new CancellationTokenSource();
                var task = worker
                           .JoinableTaskFactory
                           .RunAsync(() => worker.ScheduleRestoreAsync(
                                         SolutionRestoreRequest.OnBuild(forceRestore),
                                         cts.Token))
                           .Task;

                return(new RestoreTask
                {
                    _cts = cts,
                    _task = task
                });
            }
示例#6
0
        // A constructor utilized for running unit-tests
        public SolutionRestoreBuildHandler(
            ISettings settings,
            ISolutionRestoreWorker restoreWorker,
            IVsSolutionBuildManager3 buildManager)
        {
            Assumes.Present(settings);
            Assumes.Present(restoreWorker);
            Assumes.Present(buildManager);

            Settings = new Lazy <ISettings>(() => settings);
            SolutionRestoreWorker = new Lazy <ISolutionRestoreWorker>(() => restoreWorker);

            _solutionBuildManager = buildManager;

            _isMEFInitialized = true;
        }
        // A constructor utilized for running unit-tests
        public SolutionRestoreBuildHandler(
            INuGetLockService lockService,
            ISettings settings,
            ISolutionRestoreWorker restoreWorker,
            IVsSolutionBuildManager3 buildManager)
        {
            Assumes.Present(lockService);
            Assumes.Present(settings);
            Assumes.Present(restoreWorker);
            Assumes.Present(buildManager);

            LockService           = new Lazy <INuGetLockService>(() => lockService);
            Settings              = new Lazy <ISettings>(() => settings);
            SolutionRestoreWorker = new Lazy <ISolutionRestoreWorker>(() => restoreWorker);

            _solutionBuildManager = buildManager;
        }
示例#8
0
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (_packageRestoreManager != null)
            {
                NuGetUIThreadHelper.JoinableTaskFactory.RunAsync(async delegate
                {
                    try
                    {
                        string solutionDirectory = await _solutionManager.GetSolutionDirectoryAsync(CancellationToken.None);
                        _componentModel          = await AsyncServiceProvider.GlobalProvider.GetComponentModelAsync();
                        _vsSolutionManager       = _componentModel.GetService <IVsSolutionManager>();
                        _solutionRestoreWorker   = _componentModel.GetService <ISolutionRestoreWorker>();

                        // if the project is PR and there is no restore running, check for missing assets file
                        // otherwise check for missing packages
                        if (await ExperimentUtility.IsTransitiveOriginExpEnabled.GetValueAsync(CancellationToken.None) &&
                            _projectContextInfo?.ProjectStyle == ProjectModel.ProjectStyle.PackageReference &&
                            _solutionRestoreWorker.IsRunning == false &&
                            await GetMissingAssetsFileStatusAsync(_projectContextInfo.ProjectId))
                        {
                            _packageRestoreManager.RaiseAssetsFileMissingEventForProjectAsync(true);
                        }
                        else
                        {
                            await _packageRestoreManager.RaisePackagesMissingEventForSolutionAsync(solutionDirectory, CancellationToken.None);
                        }
                    }
                    catch (Exception ex)
                    {
                        await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
                        // By default, restore bar is invisible. So, in case of failure of RaisePackagesMissingEventForSolutionAsync, assume it is needed
                        UpdateRestoreBar(packagesMissing: true);
                        var unwrappedException = ExceptionUtility.Unwrap(ex);
                        ShowErrorUI(unwrappedException.Message);
                    }
                }).PostOnFailure(nameof(PackageRestoreBar));
            }
        }