コード例 #1
0
ファイル: AssemblyResolver.cs プロジェクト: vijayaramb/SHFB
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="configuration">The XPath navigator containing the configuration settings</param>
        public AssemblyResolver(XPathNavigator configuration) : this()
        {
            Collection <BindingRedirectSettings> importedSettings;
            BindingRedirectSettings brs;

            string useGacValue = configuration.GetAttribute("use-gac", String.Empty);

            if (!String.IsNullOrEmpty(useGacValue))
            {
                this.UseGac = Convert.ToBoolean(useGacValue, CultureInfo.InvariantCulture);
            }

            // Load assembly binding redirects if specified
            foreach (XPathNavigator nav in configuration.Select("assemblyBinding/dependentAssembly"))
            {
                brs = BindingRedirectSettings.FromXPathNavigator(nav, null, null);

                // Import settings from a configuration file?
                if (!String.IsNullOrEmpty(brs.ConfigurationFile))
                {
                    ConsoleApplication.WriteMessage(LogLevel.Info, "Importing settings from: {0}",
                                                    brs.ConfigurationFile);
                    importedSettings = BindingRedirectSettings.FromConfigFile(brs.ConfigurationFile);

                    foreach (BindingRedirectSettings imported in importedSettings)
                    {
                        ConsoleApplication.WriteMessage(LogLevel.Info,
                                                        "Loaded assembly binding redirect: {0}", imported.ToString());
                        redirects.Add(imported);
                    }
                }
                else
                {
                    ConsoleApplication.WriteMessage(LogLevel.Info, "Loaded assembly binding redirect: {0}",
                                                    brs.ToString());
                    redirects.Add(brs);
                }
            }

            // If specified, load assembly names to ignore if unresolved
            foreach (XPathNavigator nav in configuration.Select("ignoreIfUnresolved/assemblyIdentity"))
            {
                string name = nav.GetAttribute("name", String.Empty);

                if (!String.IsNullOrEmpty(name))
                {
                    ignoreIfUnresolved.Add(name);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Load assembly binding redirects from a configuration file.
        /// </summary>
        /// <param name="configFile">The configuration filename</param>
        /// <returns>A collection containing the assembly binding redirects</returns>
        public static Collection <BindingRedirectSettings> FromConfigFile(string configFile)
        {
            XmlNamespaceManager nsm;
            XmlDocument         config;
            XPathNavigator      navConfig;

            Collection <BindingRedirectSettings> redirects =
                new Collection <BindingRedirectSettings>();

            config = new XmlDocument();
            config.Load(configFile);
            nsm = new XmlNamespaceManager(config.NameTable);
            nsm.AddNamespace("binding", "urn:schemas-microsoft-com:asm.v1");

            navConfig = config.CreateNavigator();

            foreach (XPathNavigator nav in navConfig.Select(
                         "configuration/runtime/binding:assemblyBinding/binding:dependentAssembly", nsm))
            {
                redirects.Add(BindingRedirectSettings.FromXPathNavigator(nav, nsm, "binding"));
            }

            return(redirects);
        }