diff --git a/msbuild/Xamarin.Mac.Tasks.Core/Tasks/ArchiveTaskBase.cs b/msbuild/Xamarin.Mac.Tasks.Core/Tasks/ArchiveTaskBase.cs index aae6947590..99d156a58b 100644 --- a/msbuild/Xamarin.Mac.Tasks.Core/Tasks/ArchiveTaskBase.cs +++ b/msbuild/Xamarin.Mac.Tasks.Core/Tasks/ArchiveTaskBase.cs @@ -17,7 +17,7 @@ namespace Xamarin.Mac.Tasks var archiveDir = CreateArchiveDirectory (); try { - var plist = PDictionary.FromFile (Path.Combine (AppBundleDir.ItemSpec, "Contents", "Info.plist")); + var plist = PDictionary.FromFile (PlatformFrameworkHelper.GetAppManifestPath (Platform, AppBundleDir.ItemSpec)); var productsDir = Path.Combine (archiveDir, "Products"); // Archive the Applications... diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/PlatformFramework.cs b/msbuild/Xamarin.MacDev.Tasks.Core/PlatformFramework.cs index 45e3a67316..5bb7bf23a1 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/PlatformFramework.cs +++ b/msbuild/Xamarin.MacDev.Tasks.Core/PlatformFramework.cs @@ -24,6 +24,7 @@ // THE SOFTWARE. using System; +using System.IO; using Xamarin.Utils; @@ -91,5 +92,20 @@ namespace Xamarin.MacDev.Tasks { return $"-m{GetMinimumVersionOperatingSystem (targetFrameworkMoniker, isSimulator)}-version-min={minimumOSVersion}"; } + + public static string GetAppManifestPath (ApplePlatform platform, string appBundlePath) + { + switch (platform) { + case ApplePlatform.iOS: + case ApplePlatform.TVOS: + case ApplePlatform.WatchOS: + return Path.Combine (appBundlePath, "Info.plist"); + case ApplePlatform.MacOSX: + case ApplePlatform.MacCatalyst: + return Path.Combine (appBundlePath, "Contents", "Info.plist"); + default: + throw new InvalidOperationException ($"Invalid platform: {platform}"); + } + } } } diff --git a/msbuild/Xamarin.Shared/Xamarin.Shared.props b/msbuild/Xamarin.Shared/Xamarin.Shared.props index f5fa56a958..f8663afeda 100644 --- a/msbuild/Xamarin.Shared/Xamarin.Shared.props +++ b/msbuild/Xamarin.Shared/Xamarin.Shared.props @@ -213,6 +213,8 @@ Copyright (C) 2020 Microsoft. All rights reserved. <_EmbeddedResourcePrefix Condition="'$(_PlatformName)' == 'macOS'">xammac <_EmbeddedResourcePrefix Condition="'$(_PlatformName)' != 'macOS'">monotouch + + <_AppBundleManifestRelativePath Condition="'$(_PlatformName)' == 'macOS' Or '$(_IsMacCatalyst)' == 'true'">Contents/ diff --git a/msbuild/Xamarin.Shared/Xamarin.Shared.targets b/msbuild/Xamarin.Shared/Xamarin.Shared.targets index b75da6370b..c701bd8944 100644 --- a/msbuild/Xamarin.Shared/Xamarin.Shared.targets +++ b/msbuild/Xamarin.Shared/Xamarin.Shared.targets @@ -676,6 +676,9 @@ Copyright (C) 2018 Microsoft. All rights reserved. + + <_AppBundleManifestPath>$(_AppBundlePath)$(_AppBundleManifestRelativePath)$(_AppManifest) + diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs b/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs index 397137a1d6..b44cfa01db 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs +++ b/msbuild/Xamarin.iOS.Tasks.Core/Tasks/ValidateAppBundleTaskBase.cs @@ -279,7 +279,7 @@ namespace Xamarin.iOS.Tasks public override bool Execute () { - var mainInfoPath = Path.Combine (AppBundlePath, "Info.plist"); + var mainInfoPath = PlatformFrameworkHelper.GetAppManifestPath (Platform, AppBundlePath); if (!File.Exists (mainInfoPath)) { Log.LogError (7040, AppBundlePath, MSBStrings.E7040, AppBundlePath); return false; diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets index ae40bb3efd..fe1771940a 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets +++ b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets @@ -384,7 +384,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.