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