public static string EnsureUnique(string filename) {
if (!Exists(filename)) return filename;
var ext = Path.GetExtension(filename) ?? "";
var start = filename.Substring(0, filename.Length - ext.Length);
for (var i = 1; i < 99999; i++) {
var result = start + "-" + i + ext;
if (!Exists(result)) return result;
}
throw new Exception("Can’t find unique filename");
}