xamarin-macios/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ResolveNativeWatchAppTaskBa...

87 строки
2.0 KiB
C#

using System;
using System.IO;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Xamarin.MacDev.Tasks;
using Xamarin.MacDev;
using Xamarin.Utils;
using Xamarin.Localization.MSBuild;
namespace Xamarin.iOS.Tasks
{
public abstract class ResolveNativeWatchAppTaskBase : XamarinTask
{
#region Inputs
[Required]
public bool SdkIsSimulator { get; set; }
[Required]
public string SdkVersion { get; set; }
#endregion
#region Outputs
[Output]
public string NativeWatchApp { get; set; }
#endregion
bool IsWatchFramework {
get {
return Platform == ApplePlatform.WatchOS;
}
}
public override bool Execute ()
{
var currentSdk = IPhoneSdks.GetSdk (TargetFrameworkMoniker);
IPhoneSdkVersion version;
string sdk_path;
if (IsWatchFramework) {
if (!IPhoneSdkVersion.TryParse (SdkVersion, out version)) {
Log.LogError (MSBStrings.E0066, SdkVersion);
return false;
}
version = currentSdk.GetClosestInstalledSdk (version, false);
sdk_path = currentSdk.GetSdkPath (version, SdkIsSimulator);
} else {
if (AppleSdkSettings.XcodeVersion.Major >= 10) {
Log.LogError (MSBStrings.E0067);
return false;
}
if (!(AppleSdkSettings.XcodeVersion.Major > 6 || (AppleSdkSettings.XcodeVersion.Major == 6 && AppleSdkSettings.XcodeVersion.Minor >= 2))) {
Log.LogError (MSBStrings.E0068);
return false;
}
if (!IPhoneSdkVersion.TryParse (SdkVersion, out version)) {
Log.LogError (MSBStrings.E0066, SdkVersion);
return false;
}
if (version < IPhoneSdkVersion.V8_2) {
Log.LogError (MSBStrings.E0069, version);
return false;
}
version = currentSdk.GetClosestInstalledSdk (version, false);
sdk_path = currentSdk.GetSdkPath (version, SdkIsSimulator);
}
NativeWatchApp = Path.Combine (sdk_path, "Library", "Application Support", "WatchKit", "WK");
if (File.Exists (NativeWatchApp))
return true;
Log.LogError (MSBStrings.E0070);
return false;
}
}
}