private void ExtractSystemProfiles() { var namespaceName = GetType().Namespace + ".Profiles.Xml."; var systemProfilesPath = SystemProfilesPath; foreach (var name in _assemblyInfo.GetManifestResourceNames(GetType()) .Where(i => i.StartsWith(namespaceName)) .ToList()) { var filename = Path.GetFileName(name).Substring(namespaceName.Length); var path = Path.Combine(systemProfilesPath, filename); using (var stream = _assemblyInfo.GetManifestResourceStream(GetType(), name)) { var fileInfo = _fileSystem.GetFileInfo(path); if (!fileInfo.Exists || fileInfo.Length != stream.Length) { _fileSystem.CreateDirectory(systemProfilesPath); using (var fileStream = _fileSystem.GetFileStream(path, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read)) { stream.CopyTo(fileStream); } } } } // Not necessary, but just to make it easy to find _fileSystem.CreateDirectory(UserProfilesPath); }
private void ExtractAll() { var type = GetType(); var resourcePath = type.Namespace + ".Ratings."; var localizationPath = LocalizationPath; _fileSystem.CreateDirectory(localizationPath); var existingFiles = GetRatingsFiles(localizationPath) .Select(Path.GetFileName) .ToList(); // Extract from the assembly foreach (var resource in _assemblyInfo .GetManifestResourceNames(type) .Where(i => i.StartsWith(resourcePath))) { var filename = "ratings-" + resource.Substring(resourcePath.Length); if (!existingFiles.Contains(filename)) { using (var stream = _assemblyInfo.GetManifestResourceStream(type, resource)) { var target = Path.Combine(localizationPath, filename); _logger.LogInformation("Extracting ratings to {0}", target); using (var fs = _fileSystem.GetFileStream(target, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read)) { stream.CopyTo(fs); } } } } foreach (var file in GetRatingsFiles(localizationPath)) { LoadRatings(file); } LoadAdditionalRatings(); }