private T ProcessNuspecReader <T>(string id, NuGetVersion version, Func <NuspecReader, T> process)
        {
            var nuspecPath = _resolver.GetManifestFilePath(id, version);

            using (var stream = File.OpenRead(nuspecPath))
            {
                NuspecReader nuspecReader;
                try
                {
                    nuspecReader = new NuspecReader(stream);
                }
                catch (XmlException ex)
                {
                    var message = string.Format(CultureInfo.CurrentCulture, Strings.Protocol_PackageMetadataError, id + "." + version, _source);
                    var inner   = new PackagingException(message, ex);

                    throw new FatalProtocolException(message, inner);
                }
                catch (PackagingException ex)
                {
                    var message = string.Format(CultureInfo.CurrentCulture, Strings.Protocol_PackageMetadataError, id + "." + version, _source);

                    throw new FatalProtocolException(message, ex);
                }

                return(process(nuspecReader));
            }
        }
Beispiel #2
0
        public override Task <FindPackageByIdDependencyInfo> GetDependencyInfoAsync(string id, NuGetVersion version, CancellationToken token)
        {
            var info = GetPackageInfo(id, version);
            FindPackageByIdDependencyInfo dependencyInfo = null;

            if (info != null)
            {
                var nuspecPath = Path.Combine(info.Path, $"{id}.nuspec");
                using (var stream = File.OpenRead(nuspecPath))
                {
                    NuspecReader nuspecReader;
                    try
                    {
                        nuspecReader = new NuspecReader(stream);
                    }
                    catch (XmlException ex)
                    {
                        var message = string.Format(CultureInfo.CurrentCulture, Strings.Protocol_PackageMetadataError, id + "." + version, _source);
                        var inner   = new PackagingException(message, ex);

                        throw new FatalProtocolException(message, inner);
                    }
                    catch (PackagingException ex)
                    {
                        var message = string.Format(CultureInfo.CurrentCulture, Strings.Protocol_PackageMetadataError, id + "." + version, _source);

                        throw new FatalProtocolException(message, ex);
                    }

                    dependencyInfo = GetDependencyInfo(nuspecReader);
                }
            }

            return(Task.FromResult(dependencyInfo));
        }