public void WriteFile() { if (MetaInfo.Exists) { MetaInfo.Delete(); } var json = PackageMeta.ToJsonSimple(); File.WriteAllText(MetaInfo.FullName, json); MetaInfo.Refresh(); }
private Package LoadPossibleExtensionDll(Assembly a, DirectoryInfo dir, FileInfo file) { if (a == null) { return(null); } if (a.IsDynamic || a.GlobalAssemblyCache) { return(null); } if (a.FullName.StartsWith("Microsoft.", StringComparison.OrdinalIgnoreCase) || a.FullName.StartsWith("System.", StringComparison.OrdinalIgnoreCase) || a.FullName.StartsWith("NETStandard", StringComparison.OrdinalIgnoreCase)) { return(null); } if (a.GetCustomAttribute <AssemblyCopyrightAttribute>()?.Copyright?.Contains("microsoft", StringComparison.OrdinalIgnoreCase) == true) { return(null); } var extt = typeof(IExtension); var types = a.GetLoadableTypes().Where(x => !x.IsAbstract && extt.IsAssignableFrom(x)).ToList(); if (types.Count == 0) { //logger.Info("Cannot find any type in " + file.FullName + " that implements " + extt); return(null); } if (types.Count > 1) { Context.Logger.Info("Found multiple types in " + file.FullName + " implementing " + extt); return(null); } var pm = types[0].InstanceAny <IExtension>(); var meta = new PackageMeta(pm); var json = meta.ToJsonSimple(); var fi = new FileInfo(Path.Combine(dir.FullName, ExtFileName)); if (fi.Exists) { fi.Delete(); } File.WriteAllText(fi.FullName, json); fi.Refresh(); return(new Package(meta, fi)); }