コード例 #1
0
        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));
        }
コード例 #2
0
    ////////////////////////////////////////////////////  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);
    }
コード例 #3
0
 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" }));
        }
コード例 #5
0
    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);
    }
コード例 #6
0
 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;
 }
コード例 #8
0
 public static ReferenceModel ToReferenceModelWithAssembly(this AssemblyExchange assemblyExchange, AssemblyModel assembly) => new (assemblyExchange.Name, assembly)
コード例 #9
0
 private static ReferenceModel ToReferenceModelWithSearchAssembly(this AssemblyExchange assemblyExchange, IReadOnlyDictionary <string, ReferenceModel> assemblyCache) =>
 ToReferenceModelWithAssembly(assemblyExchange, assemblyCache[assemblyExchange.ShortName].LoadedAssembly);
コード例 #10
0
 private static ReferenceModel ToReferenceModelWithNewAssembly(this AssemblyExchange assemblyExchange, IReadOnlyDictionary <string, ReferenceModel> referenceProvider) =>
 ToReferenceModelWithAssembly(assemblyExchange, assemblyExchange.ToAssemblyModel(referenceProvider));
コード例 #11
0
 public SaveAssemblyViewModel(ISettingServices <GraphSettings> settings, AssemblyExchange assembly, IList <AssemblyExchange> dependencies)
 {
     this.settings = settings;
     Assembly      = assembly;
     Dependencies  = dependencies;
 }