Exemplo n.º 1
0
        static void Execute(string executable, string[] args)
        {
            var path     = Assembly.GetAssembly(typeof(Program)).Location;
            var assembly = Assembly.LoadFrom(executable);

            string[] searchDirectories = new[] {
                Path.GetDirectoryName(path),
                Path.GetDirectoryName(assembly.Location),
            };

            FileInfo configInfo = new FileInfo(Path.GetFullPath(executable) + ".config");

            if (configInfo.Exists)
            {
                // If the assembly has a config file, then use it.
                using (var sandbox = SandboxAppDomain.Create(executable, null, searchDirectories))
                {
                    var engine = sandbox.CreateInstance <RemoteChessEngine>();
                    engine.Execute(executable, args);
                }
            }
            else
            {
                var resolver = new AssemblyResolver();
                Array.ForEach(searchDirectories, d => resolver.AddSearchDirectory(d));
                resolver.Attach();
                var engine = new RemoteChessEngine();
                engine.Execute(executable, args);
            }
        }
Exemplo n.º 2
0
        public void ExecuteAssembly(string assemblyFile)
        {
            var currentDirectory = Environment.CurrentDirectory;

            Environment.CurrentDirectory = WorkindDirectory;
            SandboxAppDomain.ExecuteAssembly(assemblyFile);
            Environment.CurrentDirectory = currentDirectory;
        }