static void Watcher_PluginsChanged(object sender, PluginsChangedEventArgs <IHotSwapInvoke> e) { var latest = Latest(e.AvailablePlugins); lock (VersionLock) { if (latest.Version() > current.Version()) { Upgrade(current, latest); } Logger.LogLine("New version:"); Logger.LogLine(current.Version().ToString()); } }
public HotSwap() { Directory.CreateDirectory(modDirectory); Logger.LogLine("Watching directory " + modDirectory + " for changes," + "press esc to exit"); IPluginWatcher <IHotSwapInvoke> watcher = new PluginWatcher <IHotSwapInvoke>(modDirectory); watcher.PluginsChanged += Watcher_PluginsChanged; lock (VersionLock) { try { current = Latest(watcher.CurrentlyAvailable); Logger.LogLine("\r\nInitial startup\r\nLatest version:"); Logger.LogLine(current.Version().ToString()); // Here we set some state that should be maintained between versions current.OnHotSwapInvoke(); } catch (Exception ex) { Logger.LogLine(ex.Message); } } }