private static void AddDynamicAssembly([NotNull] [ItemNotNull] ICollection<ComposablePartCatalog> catalogs, [NotNull] string toolsDirectory, [NotNull] string assemblyFileName, [NotNull] string directory)
        {
            if (!Directory.Exists(directory))
            {
                return;
            }

            var collectionsFileName = Path.Combine(toolsDirectory, "System.Collections.Immutable.dll");
            if (!File.Exists(collectionsFileName))
            {
                Console.WriteLine("System.Collections.Immutable.dll is missing. Extensions will not be loaded.");
                return;
            }

            var codeAnalysisFileName = Path.Combine(toolsDirectory, "Microsoft.CodeAnalysis.dll");
            if (!File.Exists(codeAnalysisFileName))
            {
                Console.WriteLine("Microsoft.CodeAnalysis.dll is missing. Extensions will not be loaded.");
                return;
            }

            var compilerService = new CsharpCompilerService();

            var fileNames = Directory.GetFiles(directory, "*.cs", SearchOption.AllDirectories);
            if (!fileNames.Any())
            {
                return;
            }

            var assembly = compilerService.Compile(assemblyFileName, fileNames);
            if (assembly != null)
            {
                catalogs.Add(new AssemblyCatalog(assembly));
            }
        }
        private static void AddDynamicAssembly([NotNull] [ItemNotNull] ICollection<ComposablePartCatalog> catalogs, [NotNull] string toolsDirectory, [NotNull] string assemblyFileName, [NotNull] string directory)
        {
            if (!Directory.Exists(directory))
            {
                return;
            }

            var compilerService = new CsharpCompilerService();

            var fileNames = Directory.GetFiles(directory, "*.cs", SearchOption.AllDirectories);
            if (!fileNames.Any())
            {
                return;
            }

            var assembly = compilerService.Compile(toolsDirectory, assemblyFileName, fileNames);
            if (assembly != null)
            {
                catalogs.Add(new AssemblyCatalog(assembly));
            }
        }