Exemplo n.º 1
0
            //=====================================================================

            /// <summary>
            /// Create an instance from an XML element
            /// </summary>
            /// <param name="redirection">The binding redirection settings</param>
            /// <returns>The binding redirection settings created from the XML element</returns>
            public static BindingRedirection FromXml(XElement redirection)
            {
                if (redirection == null)
                {
                    throw new ArgumentNullException(nameof(redirection));
                }

                var br = new BindingRedirection
                {
                    Name           = redirection.Attribute("Name").Value,
                    PublicKeyToken = (string)redirection.Attribute("PublicKeyToken"),
                    OldVersion     = new Version(redirection.Attribute("OldVersion").Value),
                    NewVersion     = new Version(redirection.Attribute("NewVersion").Value),
                };

                if (redirection.Attribute("Culture") != null)
                {
                    try
                    {
                        br.Culture = new CultureInfo((string)redirection.Attribute("Culture"));
                    }
                    catch
                    {
                        // If not valid, ignore the culture
                    }
                }

                return(br);
            }
Exemplo n.º 2
0
 public void ResolveBindingRedirection(IProject project, BindingRedirection bindingRedirection)
 {
     if (_packageCache.PackagesDictionary.TryGetValue(bindingRedirection.AssemblyName, out var package))
     {
         if (package.VersionDictionary.TryGetValue(bindingRedirection.NewVersion, out var packageVersion))
         {
             packageVersion.BindingRedirectReferences.Add(project);
         }
         else
         {
             var match = package.Versions.SingleOrDefault(v => v.Matches(bindingRedirection.NewVersion));
             if (match != null)
             {
                 package.VersionDictionary[match].BindingRedirectReferences.Add(project);
             }
         }
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// File constructor
        /// </summary>
        /// <param name="filename">The filename from which to load the reflection data set information</param>
        public ReflectionDataSet(string filename)
            : this()
        {
            this.Filename = filename;

            XDocument doc     = XDocument.Load(filename);
            XElement  dataSet = doc.Root;

            platform = dataSet.Attribute("Platform").Value;

            if (dataSet.Attribute("Version") == null || !Version.TryParse(dataSet.Attribute("Version").Value, out version))
            {
                version = new Version();
            }

            title = dataSet.Attribute("Title").Value;
            allSystemTypesRedirected = ((bool?)dataSet.Attribute("AllSystemTypesRedirected") ?? false);
            notes = (string)dataSet.Element("Notes");

            foreach (var location in dataSet.Descendants("Location"))
            {
                assemblyLocations.Add(AssemblyLocation.FromXml(location));
            }

            foreach (var ignored in dataSet.Descendants("Namespace"))
            {
                ignoredNamespaces.Add(new StringWrapper {
                    Value = ignored.Value
                });
            }

            foreach (var ignored in dataSet.Descendants("Unresolved"))
            {
                ignoredUnresolved.Add(new StringWrapper {
                    Value = ignored.Value
                });
            }

            foreach (var br in dataSet.Descendants("BindingRedirection"))
            {
                bindingRedirections.Add(BindingRedirection.FromXml(br));
            }
        }
Exemplo n.º 4
0
            //=====================================================================

            /// <summary>
            /// Create an instance from an XML element
            /// </summary>
            /// <param name="redirection">The binding redirection settings</param>
            public static BindingRedirection FromXml(XElement redirection)
            {
                var br = new BindingRedirection
                {
                    Name = redirection.Attribute("Name").Value,
                    PublicKeyToken = (string)redirection.Attribute("PublicKeyToken"),
                    OldVersion = new Version(redirection.Attribute("OldVersion").Value),
                    NewVersion = new Version(redirection.Attribute("NewVersion").Value),
                };

                if(redirection.Attribute("Culture") != null)
                    try
                    {
                        br.Culture = new CultureInfo((string)redirection.Attribute("Culture"));
                    }
                    catch
                    {
                        // If not valid, ignore the culture
                    }

                return br;
            }