Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
1e64a22
[net11.0] Make CoreCLR the default runtime.
rolfbjarne Mar 31, 2026
164df35
[tests] Update the BuildStructure test to test both CoreCLR + MonoVM.
rolfbjarne Apr 1, 2026
79dc833
[tests] Fix BundleStructureTest CoreCLR variations.
rolfbjarne Apr 1, 2026
9859bc9
[runtime] Build extension libs for CoreCLR for all platforms.
rolfbjarne Apr 2, 2026
1d9c1fe
[tests] Update the CustomizedCodeSigning to test both CoreCLR + MonoVM.
rolfbjarne Apr 2, 2026
c3e304f
[tests] Fix CustomizedCodeSigning CoreCLR variations.
rolfbjarne Apr 2, 2026
31a68c0
[tests] Dedup tests are only applicable to MonoVM.
rolfbjarne Apr 2, 2026
ef006ef
[msbuild] Don't run R2R framework/dylib creation when IsMacEnabled=false
rolfbjarne Apr 2, 2026
99a5310
[tests] Split IsNotMacBuild into _Mono and _CoreCLR variants
rolfbjarne Apr 2, 2026
fb01092
[tests] Split LinkedWithNativeLibraries into _Mono and _CoreCLR variants
rolfbjarne Apr 2, 2026
de04880
[tests] Reduce duplication in expectedFrameworks arrays
rolfbjarne Apr 2, 2026
231e941
[tests] Format compact array declarations with one element per line
rolfbjarne Apr 2, 2026
a2ad2b1
[msbuild] Fix empty R2R framework name in multi-RID builds; add Mono/…
rolfbjarne Apr 3, 2026
5190dfe
Split CodeChangeSkipsTargets into Mono/CoreCLR variants
rolfbjarne Apr 3, 2026
59d0ab4
Split BuildIpaTest into Mono/CoreCLR variants
rolfbjarne Apr 3, 2026
c5b64cf
[tests] IncrementalBuildTest.Interpreter is mono-only.
rolfbjarne Apr 6, 2026
0e8a883
Split IncrementalBuildTest.Link by runtime
rolfbjarne Apr 6, 2026
c3ec0b9
Fix multi-RID CoreCLR publish and split PublishTest by runtime
rolfbjarne Apr 6, 2026
b8b4597
Fix condition.
rolfbjarne Apr 6, 2026
849588d
Split BundleStructureWithRemoteMac by runtime
rolfbjarne Apr 7, 2026
8e8a3e6
Handle Windows zip separators in CoreCLR bundle filtering
rolfbjarne Apr 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 26 additions & 23 deletions dotnet/targets/Microsoft.Sdk.R2R.targets
Original file line number Diff line number Diff line change
Expand Up @@ -149,27 +149,34 @@
</_CreateR2RFrameworkDependsOn>
</PropertyGroup>

<!-- Prepare properties and item groups for r2r framework creation -->
<Target Name="_PrepareR2RFrameworkCreation"
DependsOnTargets="CreateReadyToRunImages"
>
<PropertyGroup>
<_DesktopFramework Condition="'$(_PlatformName)' == 'macOS' Or '$(_PlatformName)' == 'MacCatalyst'">true</_DesktopFramework>
<_DesktopFramework Condition="'$(_PlatformName)' != 'macOS' And '$(_PlatformName)' != 'MacCatalyst'">false</_DesktopFramework>
<!-- Properties for R2R framework creation.
Declared outside any target so they are available at evaluation time,
including in multi-RID outer builds where _PrepareR2RFrameworkCreation
may not have run yet (e.g. _CollectR2RFrameworksForPostProcessing). -->
<PropertyGroup>
<_DesktopFramework Condition="'$(_PlatformName)' == 'macOS' Or '$(_PlatformName)' == 'MacCatalyst'">true</_DesktopFramework>
<_DesktopFramework Condition="'$(_PlatformName)' != 'macOS' And '$(_PlatformName)' != 'MacCatalyst'">false</_DesktopFramework>

<_R2RFrameworkBinaryInfix Condition="'$(_DesktopFramework)' == 'true'">/Versions/A</_R2RFrameworkBinaryInfix>
<_R2RFrameworkResourcesInfix Condition="'$(_DesktopFramework)' == 'true'">/Versions/A/Resources</_R2RFrameworkResourcesInfix>
<_R2RFrameworkBinaryInfix Condition="'$(_DesktopFramework)' == 'true'">/Versions/A</_R2RFrameworkBinaryInfix>
<_R2RFrameworkResourcesInfix Condition="'$(_DesktopFramework)' == 'true'">/Versions/A/Resources</_R2RFrameworkResourcesInfix>

<_R2RFrameworkIntermediateOutputPath Condition="'$(_R2RFrameworkIntermediateOutputPath)' == ''">$(DeviceSpecificIntermediateOutputPath)r2rframework/</_R2RFrameworkIntermediateOutputPath>
<_R2RFrameworkName Condition="'$(_R2RFrameworkName)' == ''">$(AssemblyName)</_R2RFrameworkName>
<_R2RFrameworkPath Condition="'$(_R2RFrameworkPath)' == ''">$(_R2RFrameworkIntermediateOutputPath)$(_R2RFrameworkName).framework</_R2RFrameworkPath>
<_R2RFrameworkOutput Condition="'$(_R2RFrameworkOutput)' == ''">$(_R2RFrameworkPath)$(_R2RFrameworkBinaryInfix)/$(_R2RFrameworkName)</_R2RFrameworkOutput>
<_R2RFrameworkIntermediateOutputPath Condition="'$(_R2RFrameworkIntermediateOutputPath)' == ''">$(DeviceSpecificIntermediateOutputPath)r2rframework/</_R2RFrameworkIntermediateOutputPath>
<_R2RFrameworkName Condition="'$(_R2RFrameworkName)' == ''">$(AssemblyName)</_R2RFrameworkName>
<_R2RFrameworkPath Condition="'$(_R2RFrameworkPath)' == ''">$(_R2RFrameworkIntermediateOutputPath)$(_R2RFrameworkName).framework</_R2RFrameworkPath>
<_R2RFrameworkOutput Condition="'$(_R2RFrameworkOutput)' == ''">$(_R2RFrameworkPath)$(_R2RFrameworkBinaryInfix)/$(_R2RFrameworkName)</_R2RFrameworkOutput>

<_R2RFrameworkStructureStampFile>$(_R2RFrameworkIntermediateOutputPath)$(_R2RFrameworkName)-structure.stamp</_R2RFrameworkStructureStampFile>
<_R2RFrameworkStructureStampFile>$(_R2RFrameworkIntermediateOutputPath)$(_R2RFrameworkName)-structure.stamp</_R2RFrameworkStructureStampFile>

<_R2RFrameworkInfoPlistPath>$(_R2RFrameworkPath)$(_R2RFrameworkResourcesInfix)/Info.plist</_R2RFrameworkInfoPlistPath>
</PropertyGroup>
<_R2RFrameworkInfoPlistPath>$(_R2RFrameworkPath)$(_R2RFrameworkResourcesInfix)/Info.plist</_R2RFrameworkInfoPlistPath>

<_R2RFrameworkCachePath>$(_R2RFrameworkIntermediateOutputPath)cache.txt</_R2RFrameworkCachePath>
<_R2RFrameworkCachePath2>$(_R2RFrameworkCachePath).uptodate</_R2RFrameworkCachePath2>
</PropertyGroup>

<!-- Prepare item groups for r2r framework creation -->
<Target Name="_PrepareR2RFrameworkCreation"
DependsOnTargets="CreateReadyToRunImages"
>
<ItemGroup>
<_R2RFrameworkDirectories Include="$(_R2RFrameworkPath)" />

Expand All @@ -190,10 +197,6 @@
</ItemGroup>

<!-- write a hash of all the relevant input so that we can force a re-link if necessary -->
<PropertyGroup>
<_R2RFrameworkCachePath>$(_R2RFrameworkIntermediateOutputPath)cache.txt</_R2RFrameworkCachePath>
<_R2RFrameworkCachePath2>$(_R2RFrameworkCachePath).uptodate</_R2RFrameworkCachePath2>
</PropertyGroup>
<ItemGroup>
<_R2RFrameworkCache Include="@(_R2RFrameworkInputs)" />
<_R2RFrameworkCache Include="@(_R2RFrameworkLinkerFlags)" />
Expand Down Expand Up @@ -300,7 +303,7 @@
</Target>

<Target Name="_CreateR2RFramework"
Condition="'$(CreateR2RFramework)' == 'true'"
Condition="'$(CreateR2RFramework)' == 'true' And '$(IsMacEnabled)' != 'false'"
DependsOnTargets="$(_CreateR2RFrameworkDependsOn)"
AfterTargets="CreateReadyToRunImages"
/>
Expand All @@ -319,7 +322,7 @@
DependsOnTargets="CreateReadyToRunImages"
>
<PropertyGroup>
<_R2RDylibIntermediateOutputPath Condition="'$(_R2RFrameworkIntermediateOutputPath)' == ''">$(DeviceSpecificIntermediateOutputPath)r2rdylib/</_R2RDylibIntermediateOutputPath>
<_R2RDylibIntermediateOutputPath Condition="'$(_R2RDylibIntermediateOutputPath)' == ''">$(DeviceSpecificIntermediateOutputPath)r2rdylib/</_R2RDylibIntermediateOutputPath>
<_R2RDylibName Condition="'$(_R2RDylibName)' == ''">$(AssemblyName)</_R2RDylibName>
<_R2RDylibPath Condition="'$(_R2RDylibPath)' == ''">$(_R2RDylibIntermediateOutputPath)</_R2RDylibPath>
<_R2RDylibOutput Condition="'$(_R2RDylibOutput)' == ''">$(_R2RDylibPath)$(_R2RDylibName).r2r.dylib</_R2RDylibOutput>
Expand Down Expand Up @@ -393,7 +396,7 @@
</Target>

<Target Name="_CreateR2RDylib"
Condition="'$(CreateR2RDylib)' == 'true'"
Condition="'$(CreateR2RDylib)' == 'true' And '$(IsMacEnabled)' != 'false'"
DependsOnTargets="$(_CreateR2RDylibDependsOn)"
AfterTargets="CreateReadyToRunImages"
/>
Expand Down
5 changes: 2 additions & 3 deletions dotnet/targets/Xamarin.Shared.Sdk.props
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@
-->
<_UseNativeAot Condition="'$(PublishAot)' == 'true' And '$(_IsPublishing)' == 'true'">true</_UseNativeAot>

<UseMonoRuntime Condition=" '$(UseMonoRuntime)' == '' And '$(_PlatformName)' == 'macOS'">false</UseMonoRuntime>
<UseMonoRuntime Condition=" '$(UseMonoRuntime)' == '' And '$(_UseNativeAot)' == 'true'">false</UseMonoRuntime>
<UseMonoRuntime Condition=" '$(UseMonoRuntime)' == ''">true</UseMonoRuntime>
<UseMonoRuntime Condition=" '$(UseMonoRuntime)' == ''">false</UseMonoRuntime>

<AfterMicrosoftNETSdkTargets>$(AfterMicrosoftNETSdkTargets);$(MSBuildThisFileDirectory)Microsoft.$(_PlatformName).Sdk.targets</AfterMicrosoftNETSdkTargets>

Expand Down Expand Up @@ -91,6 +89,7 @@

<!-- Tell .NET to skip sanity checks that trigger too eagerly for builds with multiple RuntimeIdentifiers -->
<AllowPublishAotWithoutRuntimeIdentifier Condition="'$(AllowPublishAotWithoutRuntimeIdentifier)' == '' And '$(_UseNativeAot)' == 'true'">true</AllowPublishAotWithoutRuntimeIdentifier>
<AllowReadyToRunWithoutRuntimeIdentifier Condition="'$(AllowReadyToRunWithoutRuntimeIdentifier)' == '' And '$(RuntimeIdentifiers)' != '' And '$(RuntimeIdentifier)' == ''">true</AllowReadyToRunWithoutRuntimeIdentifier>
<AllowSelfContainedWithoutRuntimeIdentifier Condition="'$(AllowSelfContainedWithoutRuntimeIdentifier)' == ''">true</AllowSelfContainedWithoutRuntimeIdentifier>

<!--
Expand Down
4 changes: 2 additions & 2 deletions runtime/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ MONOTOUCH_ARM64_SOURCE_STEMS = $(patsubst %.s,%,$(patsubst %.m,%,$(SHARED_ARM64_
# .NET
#

DOTNET_iOS_LIBRARIES = libextension-dotnet.a
DOTNET_tvOS_LIBRARIES = libextension-dotnet.a libtvextension-dotnet.a
DOTNET_iOS_LIBRARIES = libextension-dotnet.a libextension-dotnet-coreclr.a
DOTNET_tvOS_LIBRARIES = libextension-dotnet.a libtvextension-dotnet.a libextension-dotnet-coreclr.a libtvextension-dotnet-coreclr.a
DOTNET_macOS_LIBRARIES = libextension-dotnet-coreclr.a
DOTNET_MacCatalyst_LIBRARIES =

Expand Down
82 changes: 63 additions & 19 deletions tests/dotnet/UnitTests/BundleStructureTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,23 +46,22 @@ public static List<string> Find (string appPath)
return allFiles;
}

internal static void CheckAppBundleContents (ApplePlatform platform, string appPath, string [] runtimeIdentifiers, CodeSignature isSigned, bool isReleaseBuild)
internal static void CheckAppBundleContents (ApplePlatform platform, string appPath, string [] runtimeIdentifiers, CodeSignature isSigned, bool isReleaseBuild, bool isCoreCLR = false)
{
Console.WriteLine ($"App bundle: {appPath}");
Assert.That (appPath, Does.Exist, "App bundle existence");
var allFiles = Find (appPath);
CheckAppBundleContents (platform, allFiles, runtimeIdentifiers, isSigned, isReleaseBuild, appPath);
CheckAppBundleContents (platform, allFiles, runtimeIdentifiers, isSigned, isReleaseBuild, appPath, isCoreCLR: isCoreCLR);
}

internal static void CheckZippedAppBundleContents (ApplePlatform platform, string zippedApp, string [] runtimeIdentifiers, CodeSignature isSigned, bool isReleaseBuild)
internal static void CheckZippedAppBundleContents (ApplePlatform platform, string zippedApp, string [] runtimeIdentifiers, CodeSignature isSigned, bool isReleaseBuild, bool isCoreCLR = false)
{
var allFiles = ZipHelpers.List (zippedApp);
CheckAppBundleContents (platform, allFiles, runtimeIdentifiers, isSigned, isReleaseBuild, null);
CheckAppBundleContents (platform, allFiles, runtimeIdentifiers, isSigned, isReleaseBuild, null, isCoreCLR: isCoreCLR);
}

internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable<string> allFiles, string [] runtimeIdentifiers, CodeSignature isSigned, bool isReleaseBuild, string? appPath = null)
internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable<string> allFiles, string [] runtimeIdentifiers, CodeSignature isSigned, bool isReleaseBuild, string? appPath = null, bool isCoreCLR = false)
{
var isCoreCLR = platform == ApplePlatform.MacOSX;
var includeDebugFiles = !isReleaseBuild;

// Remove various files we don't care about (for this test) from the list of files in the app bundle.
Expand All @@ -79,13 +78,13 @@ internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable
case "libhostpolicy.dylib":
case "libmscordaccore.dylib":
case "libmscordbi.dylib":
return platform == ApplePlatform.MacOSX;
return isCoreCLR;
case "libmono-component-debugger.dylib":
case "libmono-component-diagnostics_tracing.dylib":
case "libmono-component-hot_reload.dylib":
case "libmono-component-marshal-ilgen.dylib":
case "libmonosgen-2.0.dylib":
return platform != ApplePlatform.MacOSX;
return !isCoreCLR;
case "libSystem.Native.dylib":
case "libSystem.Net.Security.Native.dylib":
case "libSystem.Globalization.Native.dylib":
Expand All @@ -96,6 +95,8 @@ internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable
case "netstandard.dll":
case "libxamarin-dotnet-debug.dylib":
case "libxamarin-dotnet.dylib":
case "libxamarin-dotnet-coreclr-debug.dylib":
case "libxamarin-dotnet-coreclr.dylib":
return true;

case "embedded.mobileprovision":
Expand All @@ -113,7 +114,27 @@ internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable
return true;

if (fn.StartsWith ("libSystem.", StringComparison.Ordinal) && fn.EndsWith (".dylib", StringComparison.Ordinal))
return platform == ApplePlatform.MacOSX;
return isCoreCLR;

if (isCoreCLR) {
// R2R compiled dylib (macOS/MacCatalyst)
if (fn.EndsWith (".r2r.dylib", StringComparison.Ordinal))
return true;

// On iOS/tvOS, CoreCLR packages native libraries as .framework bundles.
// Filter framework entries where the framework name starts with "lib"
// (these are runtime native libraries like libcoreclr, libSystem.Native, etc.)
// and the app's R2R framework (BundleStructure.framework).
if (v!.Contains (".framework")) {
var fwIdx = v.IndexOf (".framework", StringComparison.Ordinal);
// Zip entries from remote Windows builds use '\' separators, while local
// macOS bundle checks use '/'. Handle both when extracting the framework name.
var slashIdx = fwIdx > 0 ? v.LastIndexOfAny ([Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar], fwIdx - 1) : -1;
var frameworkName = v.Substring (slashIdx + 1, fwIdx - slashIdx - 1);
if (frameworkName.StartsWith ("lib", StringComparison.Ordinal) || frameworkName == "BundleStructure")
return true;
}
}

return false;
};
Expand Down Expand Up @@ -275,7 +296,7 @@ internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable
expectedFiles.Add (Path.Combine (resourcesDirectory, "SubDirectory"));
expectedFiles.Add (Path.Combine (resourcesDirectory, "SubDirectory", "AutoIncluded2.txt"));

expectedFiles.Add (Path.Combine (assemblyDirectory, "FrameworksInRuntimesNativeDirectory.dll"));
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "FrameworksInRuntimesNativeDirectory", runtimeIdentifiers, forceSingleRid: !isCoreCLR || platform == ApplePlatform.MacOSX);
AddExpectedFrameworkFiles (platform, expectedFiles, "FrameworksInRuntimesNativeDirectory1", isSigned);
AddExpectedFrameworkFiles (platform, expectedFiles, "FrameworksInRuntimesNativeDirectory2", isSigned);

Expand Down Expand Up @@ -307,10 +328,10 @@ internal static void CheckAppBundleContents (ApplePlatform platform, IEnumerable
// misc other files not directly related to the test itself
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "BundleStructure", runtimeIdentifiers, addConfig: true, includeDebugFiles: includeDebugFiles);
if (platform != ApplePlatform.MacOSX)
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "MonoTouch.Dialog", runtimeIdentifiers, forceSingleRid: (platform == ApplePlatform.MacCatalyst && !isReleaseBuild), includeDebugFiles: includeDebugFiles);
expectedFiles.Add (Path.Combine (assemblyDirectory, "nunit.framework.dll"));
expectedFiles.Add (Path.Combine (assemblyDirectory, "nunitlite.dll"));
expectedFiles.Add (Path.Combine (assemblyDirectory, "Mono.Options.dll"));
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "MonoTouch.Dialog", runtimeIdentifiers, forceSingleRid: (platform == ApplePlatform.MacCatalyst && !isReleaseBuild && !isCoreCLR), includeDebugFiles: includeDebugFiles);
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "nunit.framework", runtimeIdentifiers, forceSingleRid: !isCoreCLR || platform == ApplePlatform.MacOSX);
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "nunitlite", runtimeIdentifiers, forceSingleRid: !isCoreCLR || platform == ApplePlatform.MacOSX);
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "Mono.Options", runtimeIdentifiers, forceSingleRid: !isCoreCLR || platform == ApplePlatform.MacOSX);
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, "Touch.Client", runtimeIdentifiers, platform == ApplePlatform.MacOSX || (platform == ApplePlatform.MacCatalyst && !isReleaseBuild), includeDebugFiles: includeDebugFiles);
AddMultiRidAssembly (platform, expectedFiles, assemblyDirectory, Path.GetFileNameWithoutExtension (Configuration.GetBaseLibraryName (platform)), runtimeIdentifiers, platform == ApplePlatform.MacOSX, includeDebugFiles: includeDebugFiles);
expectedFiles.Add (Path.Combine (assemblyDirectory, "runtimeconfig.bin"));
Expand Down Expand Up @@ -611,6 +632,22 @@ public enum CodeSignature {
All,
}

[Test]
// Debug
[TestCase (ApplePlatform.iOS, "ios-arm64", CodeSignature.All, "Debug")]
[TestCase (ApplePlatform.iOS, "iossimulator-x64", CodeSignature.All, "Debug")]
[TestCase (ApplePlatform.MacCatalyst, "maccatalyst-x64", CodeSignature.All, "Debug")]
[TestCase (ApplePlatform.MacCatalyst, "maccatalyst-x64;maccatalyst-arm64", CodeSignature.All, "Debug")]
[TestCase (ApplePlatform.TVOS, "tvos-arm64", CodeSignature.All, "Debug")]
// Release
[TestCase (ApplePlatform.iOS, "ios-arm64", CodeSignature.All, "Release")]
[TestCase (ApplePlatform.MacCatalyst, "maccatalyst-x64;maccatalyst-arm64", CodeSignature.All, "Release")]
[TestCase (ApplePlatform.TVOS, "tvos-arm64", CodeSignature.All, "Release")]
public void Build_Mono (ApplePlatform platform, string runtimeIdentifiers, CodeSignature signature, string configuration)
{
Build (platform, runtimeIdentifiers, signature, configuration, true);
}

[Test]
// Debug
[TestCase (ApplePlatform.iOS, "ios-arm64", CodeSignature.All, "Debug")]
Expand All @@ -625,7 +662,12 @@ public enum CodeSignature {
[TestCase (ApplePlatform.MacCatalyst, "maccatalyst-x64;maccatalyst-arm64", CodeSignature.All, "Release")]
[TestCase (ApplePlatform.MacOSX, "osx-x64", CodeSignature.All, "Release")]
[TestCase (ApplePlatform.TVOS, "tvos-arm64", CodeSignature.All, "Release")]
public void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignature signature, string configuration)
public void Build_CoreCLR (ApplePlatform platform, string runtimeIdentifiers, CodeSignature signature, string configuration)
{
Build (platform, runtimeIdentifiers, signature, configuration, false);
}

void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignature signature, string configuration, bool useMonoRuntime)
{
var project = "BundleStructure";
Configuration.IgnoreIfIgnoredPlatform (platform);
Expand All @@ -639,6 +681,7 @@ public void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignat
properties ["_IsAppSigned"] = signature != CodeSignature.None ? "true" : "false";
if (!string.IsNullOrWhiteSpace (configuration))
properties ["Configuration"] = configuration;
properties ["UseMonoRuntime"] = useMonoRuntime ? "true" : "false";
var rv = DotNet.AssertBuild (project_path, properties);
var warnings = BinLog.GetBuildLogWarnings (rv.BinLogPath).ToArray ();
var warningMessages = FilterWarnings (warnings);
Expand Down Expand Up @@ -676,8 +719,9 @@ public void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignat
.ToList ();

var appExecutable = GetNativeExecutable (platform, appPath);
var isCoreCLR = !useMonoRuntime;

CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild);
CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild, isCoreCLR: isCoreCLR);
CollectionAssert.AreEqual (expectedWarnings, warningMessages, "Warnings");
ExecuteWithMagicWordAndAssert (platform, runtimeIdentifiers, appExecutable);

Expand All @@ -689,7 +733,7 @@ public void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignat
warnings = BinLog.GetBuildLogWarnings (rv.BinLogPath).ToArray ();
warningMessages = FilterWarnings (warnings);

CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild);
CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild, isCoreCLR: isCoreCLR);
CollectionAssert.AreEqual (expectedWarnings, warningMessages, "Warnings Rebuild 1");
ExecuteWithMagicWordAndAssert (platform, runtimeIdentifiers, appExecutable);

Expand All @@ -701,7 +745,7 @@ public void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignat
warnings = BinLog.GetBuildLogWarnings (rv.BinLogPath).ToArray ();
warningMessages = FilterWarnings (warnings);

CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild);
CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild, isCoreCLR: isCoreCLR);
CollectionAssert.AreEqual (expectedWarnings, warningMessages, "Warnings Rebuild 2");
ExecuteWithMagicWordAndAssert (platform, runtimeIdentifiers, appExecutable);

Expand All @@ -710,7 +754,7 @@ public void Build (ApplePlatform platform, string runtimeIdentifiers, CodeSignat
warnings = BinLog.GetBuildLogWarnings (rv.BinLogPath).ToArray ();
warningMessages = FilterWarnings (warnings);

CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild);
CheckAppBundleContents (platform, appPath, rids, signature, isReleaseBuild, isCoreCLR: isCoreCLR);
CollectionAssert.AreEqual (expectedWarnings, warningMessages, "Warnings Rebuild 3");
ExecuteWithMagicWordAndAssert (platform, runtimeIdentifiers, appExecutable);
}
Expand Down
Loading
Loading