AzureWebFarm.Services.ExecutableFinder.FindExecutables C# (CSharp) Method

FindExecutables() public method

public FindExecutables ( string siteName ) : IEnumerable
siteName string
return IEnumerable
        public IEnumerable<Executable> FindExecutables(string siteName)
        {
            var binFolder = Path.Combine(_sitesPath, siteName, "bin");

            if (!Directory.Exists(binFolder))
                yield break;

            var subDirs = Directory.EnumerateDirectories(binFolder);
            foreach (var d in subDirs)
            {
                var subDir = d.Split(Path.DirectorySeparatorChar).Last();
                var exe = new Executable(binFolder, subDir);

                if (exe.Exists())
                    yield return exe;
            }
        }

Usage Example

Example #1
0
        public void Update(string siteName)
        {
            lock (_executables)
            {
                if (!_executables.ContainsKey(siteName))
                {
                    _executables[siteName] = new List <Executable>();
                }

                DisposeSite(siteName);
                _executables[siteName] = new List <Executable>();

                var findExecutables = _executableFinder.FindExecutables(siteName).ToList();

                _logger.DebugFormat("{0} background workers found on {1}", findExecutables.Count(), siteName);

                _executables[siteName].AddRange(findExecutables);

                foreach (var e in _executables[siteName])
                {
                    var targetPath = Path.Combine(_executablePath, siteName);

                    _logger.DebugFormat("Executing background worker at {0} for {1}", _executablePath, siteName);

                    e.Copy(targetPath);
                    e.Execute();

                    _logger.DebugFormat("Worker Executed at {0}", targetPath);
                }
            }
        }