public IProcessAsyncOperation Execute (
			ExecutionCommand command,
			IConsole console)
		{
			var cmd = (TizenExecutionCommand) command;
			var config = cmd.Config;
			var sdkInfo = TizenSdkInfo.GetSdkInfo ();
			if (sdkInfo == null)
				return Finish (false);

			var project = config.ParentItem as Project;
			var tpkPath = FindTpkPath (project);
			if (tpkPath == null)
				return Finish (false);

			var sdkBuild = new TizenSdkBuild (config, sdkInfo);
			if (!sdkBuild.DoNativeInstall (tpkPath, console))
				return Finish (false);

			var tpkId = ExtractTpkId (tpkPath);
			if (tpkId == null)
				return Finish (false);

			var success = sdkBuild.DoNativeRun (tpkId, console);
			return Finish (success);
		}
		protected override BuildResult DoBuild (IProgressMonitor monitor, ConfigurationSelector configuration)
		{
			// Phase 1: Perform normal .NET project build.
			var res = base.DoBuild (monitor, configuration);
			if (res.ErrorCount > 0)
				return res;

			// Phase 2: Tizen SDK wrapping, linking, and packaging.
			var config = (TizenProjectConfiguration) GetConfiguration (configuration);
			var sdkInfo = TizenSdkInfo.GetSdkInfo ();
			if (sdkInfo == null) {
				res.AddError ("SDK information not provided.");
				return res;
			}

			var sdkBuild = new TizenSdkBuild (config, sdkInfo);
			sdkBuild.DoNativeBuild (monitor, res);

			return res;
		}