//===================================================================== /// <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); }
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); } } } }
/// <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)); } }
//===================================================================== /// <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; }