public async Task SwitchToVersion(ByondVersion version) { if (version.Equals(getVersion())) { logger.LogInformation($"Server is on {version.Major}.{version.Minor} version. No switch is needed."); return; } if (!Directory.Exists(GetByondDirectoryPath(version))) { logger.LogInformation($"Version {version.Major}.{version.Minor} is not installed. Downloading and installing..."); await DownloadByond(version); } if (!getVersion(GetByondDirectoryPath(version)).Equals(version)) { throw new Exception($"Byond version '{version.Major}.{version.Minor}' data mismatches folder name or ByondVersion data. Please manually remove this version."); } if (Directory.Exists(GetByondDirectoryPath())) { Directory.Delete(GetByondDirectoryPath()); } FileSystemHelper.CreateRelativeSymbolicLink(GetByondDirectoryPath(version), GetByondDirectoryPath(), Emet.FileSystems.FileType.Directory); if (!version.Equals(getVersion())) { throw new Exception($"Byond version switch failed."); } }