示例#1
0
        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(".");
        }