private IEnumerable <RemoteClientPlugin> FetchRemotePluginsImpl() { foreach (var file in Directory.GetFiles(Application.StartupPath + "\\plugins\\client")) { if (!file.GetFileName().ToLower().Contains("plugin")) { continue; } if (!file.GetFileName().EndsWith(".dll")) { continue; } var fileBuff = File.ReadAllBytes(file); var asm = Assembly.LoadFile(file); var attribute = (GuidAttribute)asm.GetCustomAttributes(typeof(GuidAttribute), true)[0]; var remotePlugin = new RemoteClientPlugin(file, fileBuff, HashHelper.CalculateSha256(fileBuff)) { PluginGuid = new Guid(attribute.Value) }; remotePlugin.AssociatedServerPluginHost = LoadedPlugins.First(p => p.PluginHost.AssociatedClientPlugin.Equals(new Guid(attribute.Value))); yield return(remotePlugin); } }