コード例 #1
0
ファイル: PackageInstaller.cs プロジェクト: cederlof/Wyam
        internal void InstallPackages()
        {
            DirectoryPath packagesPath = GetAbsolutePackagesPath();

            Trace.Information($"Installing packages to {packagesPath.FullPath} (using {(UseLocalPackagesFolder ? "local" : "global")} packages folder)");

            try
            {
                // Add the global default sources if requested
                if (UseGlobalPackageSources)
                {
                    _sourceRepositories.AddGlobalDefaults();
                }

                // Get the local repository
                SourceRepository localRepository = _sourceRepositories.CreateRepository(packagesPath.FullPath);

                // Get the package manager and repositories
                WyamFolderNuGetProject nuGetProject   = new WyamFolderNuGetProject(_fileSystem, _assemblyLoader, _currentFramework, packagesPath.FullPath);
                NuGetPackageManager    packageManager = new NuGetPackageManager(_sourceRepositories, _settings, packagesPath.FullPath)
                {
                    PackagesFolderNuGetProject = nuGetProject
                };
                IReadOnlyList <SourceRepository> remoteRepositories = _sourceRepositories.GetDefaultRepositories();

                // Resolve all the versions
                IReadOnlyList <SourceRepository> installationRepositories = remoteRepositories;
                try
                {
                    ResolveVersions(localRepository, remoteRepositories);
                }
                catch (Exception ex)
                {
                    Trace.Verbose($"Exception while resolving package versions: {ex.Message}");
                    Trace.Warning("Error while resolving package versions, attempting without remote repositories");
                    installationRepositories = new[] { localRepository };
                    ResolveVersions(localRepository, Array.Empty <SourceRepository>());
                }

                // Install the packages (doing this synchronously since doing it in parallel triggers file lock errors in NuGet on a clean system)
                try
                {
                    InstallPackages(packageManager, installationRepositories);
                }
                catch (Exception ex)
                {
                    Trace.Verbose($"Exception while installing packages: {(ex is AggregateException ? string.Join("; ", ((AggregateException)ex).InnerExceptions.Select(x => x.Message)) : ex.Message)}");
                    Trace.Warning("Error while installing packages, attempting without remote repositories");
                    InstallPackages(packageManager, new[] { localRepository });
                }

                // Process the package (do this after all packages have been installed)
                nuGetProject.ProcessAssembliesAndContent();
            }
            catch (Exception ex)
            {
                Trace.Verbose($"Unexpected exception while installing packages: {(ex is AggregateException ? string.Join("; ", ((AggregateException)ex).InnerExceptions.Select(x => x.Message)) : ex.Message)}");
                Trace.Warning("Error while installing packages, attempting to continue anyway");
            }
        }
コード例 #2
0
        internal PackageInstaller(IFileSystem fileSystem, AssemblyLoader assemblyLoader)
        {
            _fileSystem = fileSystem;

            // Get the current framework
            string frameworkName = Assembly.GetExecutingAssembly().GetCustomAttributes(true)
                                   .OfType <System.Runtime.Versioning.TargetFrameworkAttribute>()
                                   .Select(x => x.FrameworkName)
                                   .FirstOrDefault();

            CurrentFramework = frameworkName == null
                ? NuGetFramework.AnyFramework
                : NuGetFramework.ParseFrameworkName(frameworkName, new DefaultFrameworkNameProvider());

            Settings = global::NuGet.Configuration.Settings.LoadDefaultSettings(_fileSystem.RootPath.FullPath, null, new MachineWideSettings());
            IPackageSourceProvider packageSourceProvider = new PackageSourceProvider(Settings);

            SourceRepositoryProvider = new WyamSourceRepositoryProvider(packageSourceProvider);
            _nuGetProject            = new WyamFolderNuGetProject(fileSystem, assemblyLoader, CurrentFramework, GetAbsolutePackagesPath().FullPath);
            PackageManager           = new NuGetPackageManager(SourceRepositoryProvider, Settings, GetAbsolutePackagesPath().FullPath)
            {
                PackagesFolderNuGetProject = _nuGetProject
            };
        }
コード例 #3
0
ファイル: PackageInstaller.cs プロジェクト: ibebbs/Wyam
        internal void InstallPackages()
        {
            DirectoryPath packagesPath = GetAbsolutePackagesPath();
            Trace.Verbose($"Installing packages to {packagesPath.FullPath} (using {(UseLocalPackagesFolder ? "local" : "global")} packages folder)");

            try
            {
                // Add the global default sources if requested
                if (UseGlobalPackageSources)
                {
                    _sourceRepositories.AddGlobalDefaults();
                }

                // Get the local repository
                SourceRepository localRepository = _sourceRepositories.CreateRepository(packagesPath.FullPath);

                // Get the package manager and repositories
                WyamFolderNuGetProject nuGetProject = new WyamFolderNuGetProject(_fileSystem, _assemblyLoader, _currentFramework, packagesPath.FullPath);
                NuGetPackageManager packageManager = new NuGetPackageManager(_sourceRepositories, _settings, packagesPath.FullPath)
                {
                    PackagesFolderNuGetProject = nuGetProject
                };
                IReadOnlyList<SourceRepository> remoteRepositories = _sourceRepositories.GetDefaultRepositories();

                // Resolve all the versions
                IReadOnlyList<SourceRepository> installationRepositories = remoteRepositories;
                try
                {
                    ResolveVersions(localRepository, remoteRepositories);
                }
                catch (Exception ex)
                {
                    Trace.Warning("Exception while resolving package versions, attempting without remote repositories");
                    Trace.Verbose($"Exception while resolving package versions: {ex.Message}");
                    installationRepositories = new[] {localRepository};
                    ResolveVersions(localRepository, Array.Empty<SourceRepository>());
                }

                // Install the packages (doing this synchronously since doing it in parallel triggers file lock errors in NuGet on a clean system)
                try
                {
                    InstallPackages(packageManager, installationRepositories);
                }
                catch (Exception ex)
                {
                    Trace.Warning("Exception while installing packages, attempting without remote repositories");
                    Trace.Verbose($"Exception while installing packages: {(ex is AggregateException ? string.Join("; ", ((AggregateException)ex).InnerExceptions.Select(x => x.Message)) : ex.Message)}");
                    InstallPackages(packageManager, new[] { localRepository });
                }

                // Process the package (do this after all packages have been installed)
                nuGetProject.ProcessAssembliesAndContent();
            }
            catch (Exception ex)
            {
                Trace.Warning("Unexpected exception while installing packages, attempting to continue anyway");
                Trace.Verbose($"Unexpected exception while installing packages: {(ex is AggregateException ? string.Join("; ", ((AggregateException)ex).InnerExceptions.Select(x => x.Message)) : ex.Message)}");
            }
        }