namespace Mono.Documentation {
public class ManifestResourceResolver : XmlUrlResolver {
- private string dir;
+ private string[] dirs;
- public ManifestResourceResolver (string dir)
+ public ManifestResourceResolver (params string[] dirs)
{
- this.dir = dir;
+ this.dirs = (string[]) dirs.Clone ();
}
public override Uri ResolveUri (Uri baseUri, string relativeUri)
{
- using (Stream s = Assembly.GetExecutingAssembly ().GetManifestResourceStream (relativeUri)) {
- if (s != null)
+ if (Array.IndexOf (
+ Assembly.GetExecutingAssembly ().GetManifestResourceNames (),
+ relativeUri) >= 0)
return new Uri ("x-resource:///" + relativeUri);
+ foreach (var dir in dirs) {
+ if (File.Exists (Path.Combine (dir, relativeUri)))
+ return base.ResolveUri (new Uri ("file://" + new DirectoryInfo (dir).FullName + "/"),
+ relativeUri);
}
- return base.ResolveUri (
- new Uri ("file://" + new DirectoryInfo (dir).FullName + "/"),
- relativeUri);
+ return base.ResolveUri (baseUri, relativeUri);
}
public override object GetEntity (Uri absoluteUri, string role, Type ofObjectToReturn)