45
44
this.project = project;
48
public IList<TagPrefixInfo> GetInfosForPath (string webDirectory)
47
public IList<RegistrationInfo> GetInfosForPath (string webDirectory)
50
List<TagPrefixInfo> infos = new List<TagPrefixInfo> ();
49
List<RegistrationInfo> infos = new List<RegistrationInfo> ();
51
50
DirectoryInfo dir = new DirectoryInfo (webDirectory);
52
51
string projectRootParent = new DirectoryInfo (project.BaseDirectory).Parent.FullName;
53
while (dir != null && dir.FullName.Length < projectRootParent.Length && dir.FullName != projectRootParent)
52
while (dir != null && dir.FullName.Length > projectRootParent.Length && dir.FullName != projectRootParent)
55
54
string configPath = Path.Combine (dir.FullName, "web.config");
79
78
return cached.Infos;
82
TagPrefixInfo[] LoadWebConfig (string configFile)
81
RegistrationInfo[] LoadWebConfig (string configFile)
84
List<TagPrefixInfo> list = new List<TagPrefixInfo> ();
83
List<RegistrationInfo> list = new List<RegistrationInfo> ();
85
84
using (XmlTextReader reader = new XmlTextReader (configFile))
87
86
reader.WhitespaceHandling = WhitespaceHandling.None;
92
91
&& reader.ReadToDescendant ("controls") && reader.NodeType == XmlNodeType.Element
93
92
&& reader.ReadToDescendant ("add") && reader.NodeType == XmlNodeType.Element) {
95
list.Add (new TagPrefixInfo (
94
list.Add (new RegistrationInfo (
96
96
reader.GetAttribute ("tagPrefix"),
97
97
reader.GetAttribute ("namespace"),
98
98
reader.GetAttribute ("assembly"),
99
99
reader.GetAttribute ("tagName"),
100
100
reader.GetAttribute ("src")
102
//Console.WriteLine (list[list.Count -1]);
102
103
} while (reader.ReadToNextSibling ("add"));
111
112
public DateTime LastWriteUtc;
112
public TagPrefixInfo[] Infos;
113
public RegistrationInfo[] Infos;
117
class RegistrationInfo
119
public string TagPrefix { get; set; }
120
public string Namespace { get; set; }
121
public string Assembly { get; set; }
122
public string TagName { get; set; }
123
public string Source { get; set; }
124
public string ConfigFile { get; set; }
126
public bool IsAssembly {
128
return !string.IsNullOrEmpty (Assembly) && !String.IsNullOrEmpty (TagPrefix) && !string.IsNullOrEmpty (Namespace);
132
public bool IsUserControl {
134
return !string.IsNullOrEmpty (TagName) && !String.IsNullOrEmpty (TagPrefix) && !string.IsNullOrEmpty (Source);
138
public bool PrefixMatches (string prefix)
140
return 0 == string.Compare (TagPrefix, prefix, StringComparison.InvariantCultureIgnoreCase);
143
public bool NameMatches (string name)
145
return 0 == string.Compare (TagName, name, StringComparison.InvariantCultureIgnoreCase);
148
public RegistrationInfo (string configFile, string tagPrefix, string _namespace, string assembly, string tagName, string src)
150
ConfigFile = configFile;
151
TagPrefix = tagPrefix;
152
Namespace = _namespace;
158
public override string ToString ()
160
return string.Format("[RegistrationInfo: TagPrefix={0}, Namespace={1}, Assembly={2}, TagName={3}, Source={4}, ConfigFile={5}]",
161
TagPrefix, Namespace, Assembly, TagName, Source, ConfigFile);