public Task <bool> ExportAsync(AssemblyExchange assembly, IList <AssemblyExchange> dependencies, Func <UserControl, IExchangeViewModel <bool>, Task <bool> > _) { if (assembly is null) { throw new ArgumentNullException(nameof(assembly)); } var saveFileDialog = new SaveFileDialog() { FileName = assembly.ShortName, DefaultExt = ".json", Filter = "JavaScript Object Notation (.json)|*.json" }; var result = saveFileDialog.ShowDialog(); if (!(result ?? false)) { return(Task.FromResult(false)); } var serializeObject = JsonConvert.SerializeObject(new ExportModel { Assembly = assembly, Dependencies = dependencies }, Formatting.Indented); System.IO.File.WriteAllText(saveFileDialog.FileName, serializeObject); return(Task.FromResult(true)); }
//////////////////////////////////////////////////// To Assembly Model ///////////////////////////////////////////////////// public static AssemblyModel ToAssemblyModel(this AssemblyExchange assemblyExchange, IList <AssemblyExchange> dependencies) { var referenceProvider = new Dictionary <string, ReferenceModel>(); var loadedAssemblies = dependencies.GroupBy(x => x.ShortName).Select(x => GetLoadedItem(x)).ToList(); var referenceCache = loadedAssemblies.Select(x => x.ToReferenceModelWithNewAssembly(referenceProvider)).ToDictionary(x => x.LoadedAssembly.Name); var notLoadedAssemblies = dependencies.Except(loadedAssemblies).Select(x => x.ToReferenceModelWithSearchAssembly(referenceCache)); foreach (var(_, value) in referenceCache) { referenceProvider.Add(value.AssemblyFullName, value); } foreach (var item in notLoadedAssemblies) { referenceProvider.Add(item.AssemblyFullName, item); } var assembly = assemblyExchange.ToAssemblyModel(referenceProvider); assembly.ConsolidateMissingAssemblies(referenceProvider, referenceCache); assembly.ConsolidateParentLink(referenceProvider); return(assembly); }
internal static GraphAssemblyDto ToDto(this AssemblyExchange assembly) => new GraphAssemblyDto { AssembliesReferenced = assembly.AssembliesReferenced.ToList(), CreationDate = assembly.CreationDate, Creator = assembly.Creator, IsNative = assembly.IsNative, IsPartial = assembly.IsPartial, Name = assembly.Name, ShortName = assembly.ShortName, Version = assembly.Version, IsDebug = assembly.IsDebug, IsILOnly = assembly.IsILOnly, TargetFramework = assembly.TargetFramework, TargetProcessor = assembly.TargetProcessor, HasEntryPoint = assembly.HasEntryPoint };
public void FilterReferenceTest() { var assembly = new AssemblyExchange(); assembly.AssembliesReferenced.AddRange(new[] { "test1", "test2", "test3", "test4", }); assembly.RemoveAssemblyReference(new List <string> { "test2", "test4" }); Assert.AreEqual(2, assembly.AssembliesReferenced.Count); Assert.IsTrue(assembly.AssembliesReferenced.SequenceEqual(new[] { "test1", "test3" })); }
private static AssemblyExchange ToExchange(this ReferenceModel reference) { AssemblyExchange model; if (reference.IsMismatchVersion) { model = new AssemblyExchange { Name = reference.AssemblyFullName, Version = reference.AssemblyVersion ?? string.Empty, IsPartial = true, ShortName = reference.LoadedAssembly.Name, IsLocal = reference.LoadedAssembly.IsLocalAssembly } } ; else { model = reference.LoadedAssembly.ToExchange(); } return(model); }
internal static void RemoveAssemblyReference(this AssemblyExchange assembly, IList <string> referenceToRemove) => assembly.AssembliesReferenced.RemoveAll(x => referenceToRemove.Contains(x));
public static void Deconstruct(this AssemblyExchangeContent assemblyContent, out AssemblyExchange assembly, out IList <AssemblyExchange> dependencies) { assembly = assemblyContent.Assembly; dependencies = assemblyContent.Dependencies; }
public static ReferenceModel ToReferenceModelWithAssembly(this AssemblyExchange assemblyExchange, AssemblyModel assembly) => new (assemblyExchange.Name, assembly)
private static ReferenceModel ToReferenceModelWithSearchAssembly(this AssemblyExchange assemblyExchange, IReadOnlyDictionary <string, ReferenceModel> assemblyCache) => ToReferenceModelWithAssembly(assemblyExchange, assemblyCache[assemblyExchange.ShortName].LoadedAssembly);
private static ReferenceModel ToReferenceModelWithNewAssembly(this AssemblyExchange assemblyExchange, IReadOnlyDictionary <string, ReferenceModel> referenceProvider) => ToReferenceModelWithAssembly(assemblyExchange, assemblyExchange.ToAssemblyModel(referenceProvider));
public SaveAssemblyViewModel(ISettingServices <GraphSettings> settings, AssemblyExchange assembly, IList <AssemblyExchange> dependencies) { this.settings = settings; Assembly = assembly; Dependencies = dependencies; }