Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        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)
 {
 }