Пример #1
0
 private NuGetPackageManager CreatePackageManager(NuGetPluginProject <TMeta> project)
 {
     return(new NuGetPackageManager(
                _sourceRepositories,
                _settings,
                this,
                new NuGetDeleteOnRestartManager <TMeta>(_pluginRepo))
     {
         PackagesFolderNuGetProject = project
     });
 }
Пример #2
0
        public async Task <bool> InstallPluginAsync(
            PackageIdentity packageIdentity,
            TMeta metadata = default,
            bool allowPrereleaseVersions        = false,
            CancellationToken cancellationToken = default)
        {
            if (_projectMap.ContainsKey(packageIdentity.Id))
            {
                throw new ArgumentException($"Project {packageIdentity.Id} already exists");
            }

            NuGetPluginProject <TMeta> project;

            using (var pluginInstallSession = _pluginRepo.AddPlugin(packageIdentity, metadata))
            {
                project = new NuGetPluginProject <TMeta>(
                    CreatePackageManager,
                    CanUninstallPackage,
                    _currentFramework,
                    _packageDirPath,
                    _pluginHomeDirPath,
                    pluginInstallSession.Plugin,
                    false);

                await project.InstallPluginAsync(
                    NuGetProjectContext,
                    _sourceRepositories.GetEnabledRepositories(),
                    allowPrereleaseVersions,
                    cancellationToken).ConfigureAwait(false);

                pluginInstallSession.Success = true;
            }

            _projectMap[packageIdentity.Id] = project;

            return(await _pluginRepo.SaveAsync().ConfigureAwait(false));
        }