public async Task <AddNugetResult> AddPackage( string packageName, string packageVersion = null, string restoreSources = null) { var requestedPackage = new NugetPackageReference(packageName, packageVersion, restoreSources); if (!string.IsNullOrEmpty(packageName) && _nugetPackageReferences.TryGetValue(requestedPackage, out _)) { return(new AddNugetPackageResult(false, requestedPackage)); } _nugetPackageReferences.Add(requestedPackage, null); WriteProjectFile(); var dotnet = new Dotnet(Directory); var result = await dotnet.Execute("msbuild -restore /t:WriteNugetAssemblyPaths"); if (result.ExitCode != 0) { if (string.IsNullOrEmpty(packageName) && string.IsNullOrEmpty(restoreSources)) { return(new AddNugetRestoreSourcesResult( succeeded: false, requestedPackage, errors: result.Output.Concat(result.Error).ToArray())); } else { return(new AddNugetPackageResult( succeeded: false, requestedPackage, errors: result.Output.Concat(result.Error).ToArray())); } } var addedReferences = GetResolvedNugetReferences() .Values .ToArray(); if (string.IsNullOrEmpty(packageName) && !string.IsNullOrEmpty(restoreSources)) { return(new AddNugetRestoreSourcesResult( succeeded: true, requestedPackage: requestedPackage)); } else { return(new AddNugetPackageResult( succeeded: true, requestedPackage: requestedPackage, addedReferences: addedReferences)); } }
public AddNugetPackageResult( bool succeeded, NugetPackageReference requestedPackage, IReadOnlyList <ResolvedNugetPackageReference> addedReferences = null, IReadOnlyCollection <string> errors = null) : base(succeeded, requestedPackage, errors) { AddedReferences = addedReferences ?? Array.Empty <ResolvedNugetPackageReference>(); if (Succeeded) { InstalledVersion = AddedReferences .Single(r => r.PackageName.Equals(requestedPackage.PackageName, StringComparison.OrdinalIgnoreCase)) .PackageVersion; } }
public static bool TryParse(string value, out NugetPackageReference reference) { var result = _regex.Match(value); if (!result.Success) { reference = null; return(false); } var packageName = result.Groups["packageName"].Value; var packageVersion = result.Groups["packageVersion"].Value; reference = new NugetPackageReference(packageName, packageVersion); return(true); }
public AddNugetResult( bool succeeded, NugetPackageReference requestedPackage, IReadOnlyCollection <string> errors = null) { if (requestedPackage == null) { throw new ArgumentNullException(nameof(requestedPackage)); } Succeeded = succeeded; if (!succeeded && errors?.Count == 0) { throw new ArgumentException("Must provide errors when succeeded is false."); //TBD: Localize } Errors = errors ?? Array.Empty <string>(); }
public static bool TryGetNuGetPackageBasePath(NugetPackageReference nugetPackage, IEnumerable <FileInfo> metadataReferences, out IDirectoryAccessor nugetPackageDirectory) { var nugetPackageAssembly = metadataReferences.FirstOrDefault(file => string.Compare(Path.GetFileNameWithoutExtension(file.Name), nugetPackage.PackageName) == 0); if (nugetPackageAssembly != null) { var directory = nugetPackageAssembly.Directory; while (directory != null && directory.Parent != null && directory.Parent.Name.ToLower().CompareTo(nugetPackage.PackageName.ToLower()) != 0) { directory = directory.Parent; } nugetPackageDirectory = new FileSystemDirectoryAccessor(directory); return(true); } else { nugetPackageDirectory = null; return(false); } }
public AddNugetRestoreSourcesResult( bool succeeded, NugetPackageReference requestedPackage, IReadOnlyCollection <string> errors = null) : base(succeeded, requestedPackage, errors) { }