private string ResolveTargetPlatformDirectory(string version)
{
if (version == null)
return null;
var platformBasePath = Path.GetDirectoryName(Path.GetDirectoryName(typeof(string).Assembly.Location));
List<string> platformDirectories = new List<string>(Directory.GetDirectories(platformBasePath));
var platformDir = version.Substring(1);
if (platformDir.Length == 1) platformDir = platformDir + ".0";
// mono platform dir is '2.0' while windows is 'v2.0.50727'
var targetPlatformDirectory = platformDirectories
.FirstOrDefault(x => Path.GetFileName(x).StartsWith(platformDir) || Path.GetFileName(x).StartsWith($"v{platformDir}"));
if (targetPlatformDirectory == null)
throw new ArgumentException($"Failed to find target platform '{Options.TargetPlatformVersion}' in '{platformBasePath}'");
Logger.Info($"Target platform directory resolved to {targetPlatformDirectory}");
return targetPlatformDirectory;
}