protected override ExecutionCommand CreateExecutionCommand (ConfigurationSelector configSel, DotNetProjectConfiguration configuration) { var conf = (IPhoneProjectConfiguration) configuration; bool isSim = conf.IsSimPlatform; IPhoneSimulatorTarget simTarget = null; var minOS = string.IsNullOrEmpty (conf.MtouchMinimumOSVersion)? IPhoneSdkVersion.GetDefault (isSim) : IPhoneSdkVersion.Parse (conf.MtouchMinimumOSVersion); if (isSim) { simTarget = GetSimulatorTarget (conf); if (simTarget == null) { var defaultDevice = ((IPhoneProject)conf.ParentItem).SupportedDevices == TargetDevice.IPad? TargetDevice.IPad : TargetDevice.IPhone; simTarget = new IPhoneSimulatorTarget (defaultDevice, conf.MtouchSdkVersion.ResolveIfDefault (isSim)); } } return new IPhoneExecutionCommand (TargetRuntime, TargetFramework, conf.AppDirectory, conf.OutputDirectory, conf.DebugMode && conf.MtouchDebug, simTarget, minOS, SupportedDevices) { UserAssemblyPaths = GetUserAssemblyPaths (configSel) }; }
public IPhoneExecutionCommand(TargetRuntime runtime, TargetFramework framework, FilePath appPath, FilePath logDirectory, bool debugMode, IPhoneSimulatorTarget target, IPhoneSdkVersion minimumOSVersion, TargetDevice supportedDevices) { this.AppPath = appPath; this.LogDirectory = logDirectory; this.Framework = framework; this.Runtime = runtime; this.DebugMode = debugMode; this.SimulatorTarget = target; this.MinimumOSVersion = minimumOSVersion; this.SupportedDevices = supportedDevices; }
public static ProcessStartInfo CreateMtouchSimStartInfo(IPhoneExecutionCommand cmd, bool logSimOutput, IPhoneSimulatorTarget forceTarget) { string mtouchPath = cmd.Runtime.GetToolPath(cmd.Framework, "mtouch"); if (string.IsNullOrEmpty(mtouchPath)) { throw new InvalidOperationException("Cannot execute iPhone application. mtouch tool is missing."); } var outLog = cmd.OutputLogPath; var errLog = cmd.ErrorLogPath; try { if (File.Exists(errLog)) { File.Delete(errLog); } if (File.Exists(outLog)) { File.Delete(outLog); } } catch (IOException) {} var sb = new StringBuilder(); sb.AppendFormat("-launchsim='{0}'", cmd.AppPath); if (logSimOutput) { sb.AppendFormat(" -stderr='{0}' -stdout='{1}'", errLog, outLog); } if (forceTarget != null) { sb.AppendFormat(" -sdk='{0}'", forceTarget.Version.ToString()); if (forceTarget.Device == TargetDevice.IPad) { sb.AppendFormat(" -device=2"); } } var psi = new ProcessStartInfo(mtouchPath, sb.ToString()) { WorkingDirectory = cmd.LogDirectory, UseShellExecute = false }; return(psi); }
public IPhoneExecutionHandler(IPhoneSimulatorTarget target) { this.SimulatorTarget = target; }
public void SetSimulatorTarget (IPhoneProjectConfiguration conf, IPhoneSimulatorTarget value) { UserProperties.SetValue<IPhoneSimulatorTarget> (GetSimulatorTargetKey (conf), value); }
public IPhoneExecutionMode(IPhoneSimulatorTarget target) { this.Target = target; }
public static ProcessStartInfo CreateMtouchSimStartInfo(IPhoneExecutionCommand cmd, bool logSimOutput, IPhoneSimulatorTarget forceTarget) { string mtouchPath = cmd.Runtime.GetToolPath(cmd.Framework, "mtouch"); if (string.IsNullOrEmpty(mtouchPath)) { throw new InvalidOperationException("Cannot execute iPhone application. mtouch tool is missing."); } var outLog = cmd.OutputLogPath; var errLog = cmd.ErrorLogPath; try { if (File.Exists(errLog)) { File.Delete(errLog); } if (File.Exists(outLog)) { File.Delete(outLog); } } catch (IOException) {} var cb = new ProcessArgumentBuilder(); cb.AddQuotedFormat("-launchsim={0}", cmd.AppPath); if (logSimOutput) { cb.AddQuotedFormat("-stderr={0}", errLog); cb.AddQuotedFormat("-stdout={0}", outLog); } if (forceTarget != null) { var version = forceTarget.Version; if (!version.IsUseDefault && !IPhoneFramework.SdkIsInstalled(version, true)) { version = IPhoneFramework.GetClosestInstalledSdk(version, true); LoggingService.LogWarning("iOS SDK '{0}' not installed, falling back to simulator '{1}'", forceTarget.Version, version); } if (!version.IsUseDefault) { cb.AddQuotedFormat("-sdk={0}", forceTarget.Version); } if (forceTarget.Device == TargetDevice.IPad) { cb.Add("-device=2"); } } var psi = new ProcessStartInfo(mtouchPath, cb.ToString()) { WorkingDirectory = cmd.LogDirectory, UseShellExecute = false }; return(psi); }