예제 #1
0
        /// <summary>
        /// 初始化
        /// </summary>
        public static void Init(Boolean loadAllPlugins)
        {
            var baseDirectory = Entrance.Parameter.BasePath;

            Environment.CurrentDirectory = baseDirectory;
            List <String> pathList = new List <string>();

            pathList.Add(baseDirectory);
            pathList.Add(Path.Combine(baseDirectory, Entrance.Parameter.LibsPath));
            if (Environment.Is64BitProcess)
            {
                var path = Path.Combine(baseDirectory, Entrance.Parameter.LibsPath, "x64");
                pathList.Add(path);
                ProgramUtils.SetLibDirectory(path);
            }
            else
            {
                var path = Path.Combine(baseDirectory, Entrance.Parameter.LibsPath, "x86");
                ProgramUtils.SetLibDirectory(path);
            }

            var pluginDirectory = new DirectoryInfo(Path.Combine(baseDirectory, Entrance.Parameter.PluginsPath));

            if (pluginDirectory.Exists)
            {
                foreach (var pluginDi in pluginDirectory.GetDirectories())
                {
                    pathList.Add(pluginDi.FullName);
                    if (loadAllPlugins)
                    {
                        String pluginName     = pluginDi.Name;
                        String pluginFilePath = Path.Combine(pluginDi.FullName, pluginName + ".dll");
                        if (!File.Exists(pluginFilePath))
                        {
                            continue;
                        }
                        Assembly assembly = Assembly.UnsafeLoadFrom(pluginFilePath);
                    }
                }
            }
            assemblySearchPathArray = pathList.ToArray();

            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
        }