public override async Task ExecuteCommandAsync() { // update with self as parameter if (Self) { var selfUpdater = new SelfUpdater(repositoryFactory: RepositoryFactory) { Console = Console }; selfUpdater.UpdateSelf(Prerelease); return; } string inputFile = GetInputFile(); if (string.IsNullOrEmpty(inputFile)) { throw new CommandLineException(NuGetResources.InvalidFile); } _msbuildDirectory = MsBuildUtility.GetMsBuildDirectoryFromMsBuildPath(MSBuildPath, MSBuildVersion, Console).Value.Path; var context = new UpdateConsoleProjectContext(Console, FileConflictAction); string inputFileName = Path.GetFileName(inputFile); // update with packages.config as parameter if (CommandLineUtility.IsValidConfigFileName(inputFileName)) { await UpdatePackagesAsync(inputFile, context); return; } // update with project file as parameter if (ProjectHelper.SupportedProjectExtensions.Contains(Path.GetExtension(inputFile) ?? string.Empty)) { if (!File.Exists(inputFile)) { throw new CommandLineException(NuGetResources.UnableToFindProject, inputFile); } var projectSystem = new MSBuildProjectSystem( _msbuildDirectory, inputFile, context); await UpdatePackagesAsync(projectSystem, GetRepositoryPath(projectSystem.ProjectFullPath)); return; } if (!File.Exists(inputFile)) { throw new CommandLineException(NuGetResources.UnableToFindSolution, inputFile); } // update with solution as parameter string solutionDir = Path.GetDirectoryName(inputFile); await UpdateAllPackages(solutionDir, context); }
public NuGetProject(List <string> packagesList, string packagesPath, ProjectFile projectFile, ILog log) { this.log = log; this.packagesList = packagesList; this.projectFile = projectFile; installedPackages = new HashSet <PackageIdentity>(); var sourceProvider = new PackageSourceProvider(Settings.LoadDefaultSettings(null)); var sourceRepositoryProvider = new CommandLineSourceRepositoryProvider(sourceProvider); repositories = sourceProvider.LoadPackageSources().Select(sourceRepositoryProvider.CreateRepository) .ToList(); logger = new Console(); var projectFilePath = projectFile.FilePath; var msbuildDirectory = Path.GetDirectoryName(ModuleBuilderHelper.FindMsBuild(null, "Cement NuGet Package Installer")); projectContext = new ConsoleProjectContext(logger); projectSystem = new MSBuildProjectSystem( msbuildDirectory, projectFilePath, projectContext); var projectFolder = Path.GetDirectoryName(projectFilePath); project = new MSBuildNuGetProject(projectSystem, packagesPath, projectFolder); }
public TestInfo(string projectFileContent, string projectName = "proj1") { ProjectDirectory = TestDirectory.Create(); MSBuildDirectory = MsBuildUtility.GetMsBuildDirectory(null, null); NuGetProjectContext = new TestNuGetProjectContext(); var projectFilePath = Path.Combine(ProjectDirectory, projectName + ".csproj"); File.WriteAllText(projectFilePath, projectFileContent); MSBuildProjectSystem = new MSBuildProjectSystem(MSBuildDirectory, projectFilePath, NuGetProjectContext); }
public TestInfo(ITestOutputHelper testOutputHelper, string projectFileContent, string projectName = "proj1") { var console = new Mock <IConsole>(); console.Setup(c => c.WriteLine(It.IsAny <string>(), It.IsAny <object[]>())).Callback <string, object[]>((format, args) => testOutputHelper.WriteLine(format, args)); console.SetupGet(c => c.Verbosity).Returns(Verbosity.Detailed); _projectDirectory = TestDirectory.Create(); _msBuildDirectory = MsBuildUtility.GetMsBuildToolset(null, console.Object).Path; _nuGetProjectContext = new TestNuGetProjectContext(); var projectFilePath = Path.Combine(_projectDirectory, projectName + ".csproj"); File.WriteAllText(projectFilePath, projectFileContent); MSBuildProjectSystem = new MSBuildProjectSystem(_msBuildDirectory, projectFilePath, _nuGetProjectContext); }
//download the specified version of the package and update project reference to it. The newly downloaded package //will be located in /packages folder. The updated project reference can be checked in corresponding .csproj file. public bool Execute(string packageid, string projectFile, SemanticVersion version, string packages) { try { System.Console.WriteLine("-------------------------------------"); System.Console.WriteLine("Project File " + projectFile); System.Console.WriteLine("Package " + packageid); System.Console.WriteLine("Version " + version); IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository("https://packages.nuget.org/api/v2"); var packagePathResolver = new DefaultPackagePathResolver(packages); var packagesFolderFileSystem = new PhysicalFileSystem(packages); var projectSystem = new MSBuildProjectSystem(projectFile); var localRepository = new LocalPackageRepository(packagePathResolver, packagesFolderFileSystem); var projectManager = new ProjectManager(repo, packagePathResolver, projectSystem, localRepository); projectManager.RemovePackageReference(packageid, true, false); projectManager.AddPackageReference(packageid, version, true, false); projectSystem.Save(); string filename = packageid + "." + version; string[] s = Directory.GetFiles(packages + @"\" + filename); if (s.IsEmpty()) { System.Console.WriteLine("empty"); } else { var nupkgFile = new PhysicalFileSystem(s[0]); ZipPackage z = new ZipPackage(s[0]); z.ExtractContents(nupkgFile, packages + @"\" + filename); } System.Console.WriteLine("Successfully updated"); return(true); } catch (Exception e) { System.Console.Write("failure"); System.Console.Write(e.StackTrace); return(false); } }
private async Task UpdatePackagesAsync(MSBuildProjectSystem project, string packagesDirectory) { var sourceRepositoryProvider = GetSourceRepositoryProvider(); var packageManager = new NuGetPackageManager(sourceRepositoryProvider, Settings, packagesDirectory); var nugetProject = new MSBuildNuGetProject(project, packagesDirectory, project.ProjectFullPath); if (!nugetProject.PackagesConfigNuGetProject.PackagesConfigExists()) { throw new CommandLineException(LocalizedResourceManager.GetString("NoPackagesConfig")); } var versionConstraints = Safe ? VersionConstraints.ExactMajor | VersionConstraints.ExactMinor : VersionConstraints.None; var projectActions = new List <NuGetProjectAction>(); using (var sourceCacheContext = new SourceCacheContext()) { var resolutionContext = new ResolutionContext( Resolver.DependencyBehavior.Highest, Prerelease, includeUnlisted: false, versionConstraints: versionConstraints, gatherCache: new GatherCache(), sourceCacheContext: sourceCacheContext); var packageSources = GetPackageSources(); Console.PrintPackageSources(packageSources); var sourceRepositories = packageSources.Select(sourceRepositoryProvider.CreateRepository); if (Id.Count > 0) { var targetIds = new HashSet <string>(Id, StringComparer.OrdinalIgnoreCase); var installed = await nugetProject.GetInstalledPackagesAsync(CancellationToken.None); // If -Id has been specified and has exactly one package, use the explicit version requested var targetVersion = Version != null && Id != null && Id.Count == 1 ? new NuGetVersion(Version) : null; var targetIdentities = installed .Select(pr => pr.PackageIdentity.Id) .Where(id => targetIds.Contains(id)) .Select(id => new PackageIdentity(id, targetVersion)) .ToList(); if (targetIdentities.Any()) { var actions = await packageManager.PreviewUpdatePackagesAsync( targetIdentities, new[] { nugetProject }, resolutionContext, project.NuGetProjectContext, sourceRepositories, Enumerable.Empty <SourceRepository>(), CancellationToken.None); projectActions.AddRange(actions); } } else { var actions = await packageManager.PreviewUpdatePackagesAsync( new[] { nugetProject }, resolutionContext, project.NuGetProjectContext, sourceRepositories, Enumerable.Empty <SourceRepository>(), CancellationToken.None); projectActions.AddRange(actions); } await packageManager.ExecuteNuGetProjectActionsAsync( nugetProject, projectActions, project.NuGetProjectContext, sourceCacheContext, CancellationToken.None); } project.Save(); }
public override async Task ExecuteCommandAsync() { // update with self as parameter if (Self) { var selfUpdater = new SelfUpdater(repositoryFactory: RepositoryFactory) { Console = Console }; selfUpdater.UpdateSelf(Prerelease); return; } string inputFile = GetInputFile(); if (string.IsNullOrEmpty(inputFile)) { throw new CommandLineException(NuGetResources.InvalidFile); } _msbuildDirectory = MsBuildUtility.GetMsBuildDirectoryFromMsBuildPath(MSBuildPath, MSBuildVersion, Console).Value.Path; var context = new UpdateConsoleProjectContext(Console, FileConflictAction); var logger = new LoggerAdapter(context); var signedPackageVerifier = new PackageSignatureVerifier(SignatureVerificationProviderFactory.GetSignatureVerificationProviders()); var signedPackageVerifierSettings = SignedPackageVerifierSettings.GetClientPolicy(Settings, logger); context.PackageExtractionContext = new PackageExtractionContext( PackageSaveMode.Defaultv2, PackageExtractionBehavior.XmlDocFileSaveMode, logger, signedPackageVerifier, signedPackageVerifierSettings); string inputFileName = Path.GetFileName(inputFile); // update with packages.config as parameter if (CommandLineUtility.IsValidConfigFileName(inputFileName)) { await UpdatePackagesAsync(inputFile, context); return; } // update with project file as parameter if (ProjectHelper.SupportedProjectExtensions.Contains(Path.GetExtension(inputFile) ?? string.Empty)) { if (!File.Exists(inputFile)) { throw new CommandLineException(NuGetResources.UnableToFindProject, inputFile); } var projectSystem = new MSBuildProjectSystem( _msbuildDirectory, inputFile, context); await UpdatePackagesAsync(projectSystem, GetRepositoryPath(projectSystem.ProjectFullPath)); return; } if (!File.Exists(inputFile)) { throw new CommandLineException(NuGetResources.UnableToFindSolution, inputFile); } // update with solution as parameter string solutionDir = Path.GetDirectoryName(inputFile); await UpdateAllPackages(solutionDir, context); }
public VsMSBuildProjectSystemServices(MSBuildProjectSystem vsProjectSystem, IProjectAdapter projectAdapter) { _vsProjectSystem = vsProjectSystem; _projectAdapter = projectAdapter; }
public BetterThanLocalPackageRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem, MSBuildProjectSystem projectSystem) : base(pathResolver, fileSystem) { _projectSystem = projectSystem; }
public void Can_get_unity_project_type_guid() { var guid = MSBuildProjectSystem.UnityTypeGuid("asteroids"); Assert.Equal(Guid.Parse("D02EBBA0-86EB-60B6-155B-94E12649FF84"), guid); }