/// <summary> /// Initializes a new instance of <see cref="FileSystemAssemblyProvider"/> /// </summary> /// <param name="fileSystem"></param> public FileSystemAssemblyProvider(IFileSystem fileSystem) { var codeBase = typeof(FileSystemAssemblyProvider).Assembly.GetName().CodeBase; var uri = new Uri(codeBase); var assemblyFileInfo = new FileInfo(uri.LocalPath); var assemblyFiles = fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.dll").ToList(); assemblyFiles.AddRange(fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.exe")); AvailableAssemblies = assemblyFiles.Select(file => new AssemblyInfo(Path.GetFileNameWithoutExtension(file.FullName), file.FullName)); }
/// <summary> /// Initializes a new instance of <see cref="FileSystemAssemblyProvider"/> /// </summary> /// <param name="fileSystem"></param> public FileSystemAssemblyProvider(IFileSystem fileSystem) { var codeBase = typeof(FileSystemAssemblyProvider).GetTypeInfo().Assembly.CodeBase; var uri = new Uri(codeBase); var assemblyFileInfo = new FileInfo(uri.LocalPath); var assemblyFiles = fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.dll").ToList(); assemblyFiles.AddRange(fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.exe")); AvailableAssemblies = assemblyFiles.Select(file => new AssemblyInfo(Path.GetFileNameWithoutExtension(file.FullName), file.FullName)); }
/// <summary> /// Initializes a new instance of <see cref="FileSystemAssemblyProvider"/> /// </summary> /// <param name="fileSystem"></param> /// <param name="assemblyUtility"></param> public FileSystemAssemblyProvider(IFileSystem fileSystem, IAssemblyUtility assemblyUtility) { var codeBase = typeof(FileSystemAssemblyProvider).Assembly.GetName().CodeBase; var uri = new Uri(codeBase); var assemblyFileInfo = new FileInfo(uri.LocalPath); AvailableAssemblies = new ObservableCollection<AssemblyInfo>( fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.dll") .Concat(fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.exe")) .Select(fi => fi.FullName) .Select(AssemblyInfoFromFileInfo) .Where(assemblyUtility.IsAssembly)); }
/// <summary> /// Initializes a new instance of <see cref="FileSystemAssemblyProvider"/> /// </summary> /// <param name="fileSystem"><see cref="IFileSystem"/> to provide from</param> /// <param name="logger"><see cref="ILogger"/> for logging</param> public FileSystemAssemblyProvider(IFileSystem fileSystem, ILogger logger) { var codeBase = typeof(FileSystemAssemblyProvider).GetTypeInfo().Assembly.CodeBase; var uri = new Uri(codeBase); logger.Information($"Codebase is '{codeBase}'"); var assemblyFileInfo = new FileInfo(uri.LocalPath); var assemblyFiles = fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.dll").ToList(); assemblyFiles.AddRange(fileSystem.GetFilesFrom(assemblyFileInfo.Directory.ToString(), "*.exe")); assemblyFiles.ForEach(assemblyFile => logger.Information($"Discovered assembly '{assemblyFile}")); AvailableAssemblies = assemblyFiles.Select(file => new AssemblyInfo(Path.GetFileNameWithoutExtension(file.FullName), file.FullName)); foreach (var assembly in AvailableAssemblies) { logger.Information($"Providing '{assembly.FileName}'"); } }