static ResourceLoader() { // add one level down from execution directory as a basedir Uri url = new Uri(Assembly.GetAssembly(typeof(ResourceLoader)).CodeBase); string dllpath = Path.GetDirectoryName(url.AbsolutePath); string last = StringUtils.RField(dllpath, 0, Path.DirectorySeparatorChar, 1); if (last == "Debug" || last == "Release") { Paths.Add(StringUtils.RTrimField(dllpath, 2, Path.DirectorySeparatorChar)); } else { Paths.Add(StringUtils.RTrimField(dllpath, 1, Path.DirectorySeparatorChar)); } // add elements in path var pathvar = (Environment.OSVersion.Platform == PlatformID.Win32NT) ? "Path" : "PATH"; var PATH = Environment.GetEnvironmentVariable(pathvar); var elems = StringUtils.Split(PATH, Path.PathSeparator, true); foreach (string path in elems) { Paths.Add(path); } // add elements in library path var libpath = Environment.GetEnvironmentVariable("LD_LIBRARY_PATH"); if (libpath != null) { var lelems = StringUtils.Split(libpath, Path.PathSeparator, true); foreach (string path in lelems) { Paths.Add(path); } } var installdir = FindInstallDir(Path.GetDirectoryName(typeof(ResourceLoader).Assembly.Location)); if (installdir != null) { // add install dir path Paths.Add(installdir); // add development paths var srcdir = installdir + Path.DirectorySeparatorChar + "src"; if (Directory.Exists(srcdir)) { foreach (var path in FileUtils.FindDir(srcdir, "etc", 3)) { Paths.Add(FileUtils.AncestorOf(path, 1)); } } } Paths.Add("."); }