예제 #1
0
        private IExternalReferenceResolver CreateResolver(string name, string configFile)
        {
            IExternalReferenceResolver resolver = null;

            try
            {
                ExeConfigurationFileMap map = new ExeConfigurationFileMap();
                map.ExeConfigFilename = configFile;
                var config      = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
                var unityConfig = (UnityConfigurationSection)config.GetSection("unity");

                if (unityConfig == null)
                {
                    WriteMessage(MessageLevel.Error, "Missing <unity> configuration section in app.config file.");
                    return(null);
                }

                UnityContainer unity = new UnityContainer();
                unityConfig.Containers.Default.Configure(unity);

                resolver = unity.Resolve <IExternalReferenceResolver>(name);
                WriteMessage(MessageLevel.Info, String.Format("Created resolver '{0}'.", resolver.ResolverName));
            }
            catch (ResolutionFailedException ex)
            {
                WriteMessage(MessageLevel.Error, ex.Message);
            }
            catch (ConfigurationException ex)
            {
                WriteMessage(MessageLevel.Error, ex.Message);
            }

            return(resolver);
        }
예제 #2
0
        private string ResolveExternalUrl(string targetId, LinkType2 type)
        {
            IExternalReferenceResolver resolver = (type == LinkType2.Msdn) ? this.msdn : this.ExternalResover;

            if ((resolver == null) || (resolver.IsDisabled))
            {
                // no resolver
                WriteMessage(MessageLevel.Warn, String.Format("No resolver for link type {0} is defined or enabled.", type));
                return(null);
            }

            String externalUrl = resolver.GetExternalUrl(targetId);

            if (String.IsNullOrEmpty(externalUrl))
            {
                WriteMessage(MessageLevel.Warn, String.Format("{0} not found for target '{1}'.", resolver.ResolverName, targetId));
            }
            return(externalUrl);
        }