internal void Read(XmlReader reader) { while (reader.Read()) { // Look for the end element. if (reader.NodeType == XmlNodeType.EndElement && AppConfig.StringEquals(reader.Name, "runtime")) { return; } // Look for a <dependentAssembly> element if (reader.NodeType == XmlNodeType.Element && AppConfig.StringEquals(reader.Name, "dependentAssembly")) { var dependentAssembly = new DependentAssembly(); dependentAssembly.Read(reader); // Only add if there was an <assemblyIdentity> tag. // Otherwise, this section is no use. if (dependentAssembly.PartialAssemblyName != null) { DependentAssemblies.Add(dependentAssembly); } } } }
internal void Read(XmlTextReader reader) { ArrayList list = new ArrayList(); if (this.bindingRedirects != null) { list.AddRange(this.bindingRedirects); } while (reader.Read()) { if ((reader.NodeType == XmlNodeType.EndElement) && AppConfig.StringEquals(reader.Name, "dependentassembly")) { break; } if ((reader.NodeType == XmlNodeType.Element) && AppConfig.StringEquals(reader.Name, "assemblyIdentity")) { string str = null; string str2 = "null"; string str3 = "neutral"; while (reader.MoveToNextAttribute()) { if (AppConfig.StringEquals(reader.Name, "name")) { str = reader.Value; } else { if (AppConfig.StringEquals(reader.Name, "publicKeyToken")) { str2 = reader.Value; continue; } if (AppConfig.StringEquals(reader.Name, "culture")) { str3 = reader.Value; } } } string assemblyName = string.Format(CultureInfo.InvariantCulture, "{0}, Version=0.0.0.0, Culture={1}, PublicKeyToken={2}", new object[] { str, str3, str2 }); try { this.partialAssemblyName = new AssemblyNameExtension(assemblyName).AssemblyName; } catch (FileLoadException exception) { Microsoft.Build.Shared.ErrorUtilities.VerifyThrowArgument(false, exception, "AppConfig.InvalidAssemblyIdentityFields"); } } if ((reader.NodeType == XmlNodeType.Element) && AppConfig.StringEquals(reader.Name, "bindingRedirect")) { BindingRedirect redirect = new BindingRedirect(); redirect.Read(reader); list.Add(redirect); } } this.bindingRedirects = (BindingRedirect[])list.ToArray(typeof(BindingRedirect)); }
internal void Read(XmlTextReader reader) { while (reader.Read()) { if ((reader.NodeType == XmlNodeType.EndElement) && AppConfig.StringEquals(reader.Name, "runtime")) { return; } if ((reader.NodeType == XmlNodeType.Element) && AppConfig.StringEquals(reader.Name, "dependentAssembly")) { DependentAssembly assembly = new DependentAssembly(); assembly.Read(reader); if (assembly.PartialAssemblyName != null) { this.dependentAssemblies.Add(assembly); } } } }
/// <summary> /// The reader is positioned on a <dependentassembly> element--read it. /// </summary> /// <param name="reader"></param> internal void Read(XmlReader reader) { ArrayList redirects = new ArrayList(); if (_bindingRedirects != null) { redirects.AddRange(_bindingRedirects); } while (reader.Read()) { // Look for the end element. if (reader.NodeType == XmlNodeType.EndElement && AppConfig.StringEquals(reader.Name, "dependentassembly")) { break; } // Look for a <assemblyIdentity> element if (reader.NodeType == XmlNodeType.Element && AppConfig.StringEquals(reader.Name, "assemblyIdentity")) { string name = null; string publicKeyToken = "null"; string culture = "neutral"; // App.config seems to have mixed case attributes. while (reader.MoveToNextAttribute()) { if (AppConfig.StringEquals(reader.Name, "name")) { name = reader.Value; } else if (AppConfig.StringEquals(reader.Name, "publicKeyToken")) { publicKeyToken = reader.Value; } else if (AppConfig.StringEquals(reader.Name, "culture")) { culture = reader.Value; } } string assemblyName = String.Format ( CultureInfo.InvariantCulture, "{0}, Version=0.0.0.0, Culture={1}, PublicKeyToken={2}", name, culture, publicKeyToken ); try { _partialAssemblyName = new AssemblyNameExtension(assemblyName).AssemblyName; } catch (System.IO.FileLoadException e) { // A badly formed assembly name. ErrorUtilities.VerifyThrowArgument(false, e, "AppConfig.InvalidAssemblyIdentityFields"); } } // Look for a <bindingRedirect> element. if (reader.NodeType == XmlNodeType.Element && AppConfig.StringEquals(reader.Name, "bindingRedirect")) { BindingRedirect bindingRedirect = new BindingRedirect(); bindingRedirect.Read(reader); redirects.Add(bindingRedirect); } } _bindingRedirects = (BindingRedirect[])redirects.ToArray(typeof(BindingRedirect)); }