diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
index 1fac91fbcaf3c..84477d2c25a8a 100644
--- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
+++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml
@@ -89,6 +89,39 @@ jobs:
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
+#
+# iOS/tvOS devices
+# Build the whole product using Native AOT and run libraries tests
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: coreclr
+ isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
+ isiOSLikeOnlyBuild: ${{ parameters.isiOSLikeOnlyBuild }}
+ platforms:
+ - ios_arm64
+ - tvos_arm64
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: coreclrContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_NativeAOT
+ buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true
+ timeoutInMinutes: 180
+ # extra steps, run tests
+ extraStepsTemplate: /eng/pipelines/libraries/helix.yml
+ extraStepsParameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
+
#
# Build the whole product using NativeAOT for iOS/tvOS and run runtime tests with iOS/tvOS devices
#
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index 2112c0a0bf616..0f1f9610c6034 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -598,6 +598,48 @@ extends:
eq(variables['monoContainsChange'], true),
eq(variables['isRollingBuild'], true))
+ #
+ # iOS/tvOS devices
+ # Build the whole product using Native AOT and run libraries tests
+ #
+ - template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: coreclr
+ platforms:
+ - ios_arm64
+ - tvos_arm64
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: coreclrContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_NativeAOT
+ buildArgs: --cross -s clr.alljits+clr.tools+clr.nativeaotruntime+clr.nativeaotlibs+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:RunSmokeTestsOnly=true /p:DevTeamProvisioning=- /p:BuildTestsOnHelix=true /p:UseNativeAOTRuntime=true /p:RunAOTCompilation=false /p:ContinuousIntegrationBuild=true
+ timeoutInMinutes: 180
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ eq(variables['isRollingBuild'], true))
+ # extra steps, run tests
+ extraStepsTemplate: /eng/pipelines/libraries/helix.yml
+ extraStepsParameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['coreclrContainsChange'], true),
+ eq(variables['isRollingBuild'], true))
+
#
# MacCatalyst interp - requires AOT Compilation and Interp flags
# Build the whole product using Mono and run libraries tests
diff --git a/eng/testing/tests.ioslike.targets b/eng/testing/tests.ioslike.targets
index 18d7ebcdd3a19..9151c7c7db05e 100644
--- a/eng/testing/tests.ioslike.targets
+++ b/eng/testing/tests.ioslike.targets
@@ -16,17 +16,22 @@
<_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration)
- <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=true /p:Configuration=$(Configuration)
+ <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=true /p:Configuration=$(Configuration)
<_AOTBuildCommand>$(_AOTBuildCommand)
<_ResetSimulatorSwitch Condition="'$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'tvossimulator'">--reset-simulator
<_SignalAppEndSwitch>--signal-app-end
<_AppleSignCommand Condition="'$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvos'">sign "$app"
+ true
+
+ <_AppleBuildCommand Condition="'$(IncludesTestRunner)' == 'true'">apple test
+ <_AppleBuildCommand Condition="'$(IncludesTestRunner)' != 'true'">apple run
+ <_AppleExpectedExitCode Condition="'$(ExpectedExitCode)' != ''">--expected-exit-code $(ExpectedExitCode)
<_AfterBuildCommands>
mv $XHARNESS_OUT/AOTBuild.binlog "$HELIX_WORKITEM_UPLOAD_ROOT"
$(_AppleSignCommand)
- xharness apple test --app "$app" --output-directory "$output_directory" --target "$target" --timeout "$timeout" --xcode "$xcode_path" -v --launch-timeout "$launch_timeout" $(_ResetSimulatorSwitch) $(_SignalAppEndSwitch) --
+ xharness $(_AppleBuildCommand) --app "$app" --output-directory "$output_directory" --target "$target" --timeout "$timeout" --xcode "$xcode_path" -v --launch-timeout "$launch_timeout" $(_ResetSimulatorSwitch) $(_SignalAppEndSwitch) $(_AppleExpectedExitCode) --
$(_AOTBuildCommand) $(_AfterBuildCommands)
@@ -66,11 +71,23 @@
Include="@(AppleAssembliesToBundle)" TargetDir="publish\%(AppleAssembliesToBundle.RecursiveDir)" />
+
+
+
+
+
+
+
+
<_BundlePdbFiles Include="$([System.IO.Path]::ChangeExtension('%(AppleAssembliesToBundle.Identity)', '.pdb'))" />
@@ -103,8 +120,10 @@
<_ApplePropertyNames Include="HybridGlobalization" />
<_ApplePropertyNames Include="AssemblyName" />
<_ApplePropertyNames Include="MonoEnableLLVM" />
+ <_ApplePropertyNames Include="MainLibraryFileName" />
+ <_ApplePropertyNames Include="UseConsoleUITemplate" />
<_ApplePropertyNames Include="UseRuntimeComponents" />
- <_ApplePropertyNames Include="IsRuntimeTests" />
+ <_ApplePropertyNames Include="IncludesTestRunner" />
<_ApplePropertiesToPass
Include="$(%(_ApplePropertyNames.Identity))"
@@ -138,8 +157,9 @@
+ true
true
- AppleTestRunner.dll
+ AppleTestRunner.dll
$(PublishDir)
$(BundleDir)
diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets
index 2770c97df7d67..589a3fb90753a 100644
--- a/eng/testing/tests.mobile.targets
+++ b/eng/testing/tests.mobile.targets
@@ -14,8 +14,9 @@
true
-
- true
+
+ true
+ true
diff --git a/src/libraries/sendtohelix-mobile.targets b/src/libraries/sendtohelix-mobile.targets
index 3374d38e45c7f..53e5f30194a90 100644
--- a/src/libraries/sendtohelix-mobile.targets
+++ b/src/libraries/sendtohelix-mobile.targets
@@ -58,17 +58,27 @@
<_XHarnessAppleCustomCommand Condition="'$(NeedsiOSSDK)' == 'true'">
source build-apple-app.sh
+ $([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'microsoft.net.illink.tasks', '$(MicrosoftNETILLinkTasksVersion)'))
-
+
-
+
+
+
+
+
diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj
index f0d278a44b681..30d32174038a9 100644
--- a/src/libraries/tests.proj
+++ b/src/libraries/tests.proj
@@ -240,14 +240,6 @@
-
-
-
-
-
-
-
-
@@ -284,9 +276,6 @@
-
-
-
@@ -535,7 +524,7 @@
-
+
@@ -631,7 +620,7 @@
BuildInParallel="false" />
-
+
@@ -640,6 +629,13 @@
BuildInParallel="false" />
+
+
+
+
+
@@ -647,8 +643,6 @@
-
@@ -661,8 +655,6 @@
-
diff --git a/src/mono/msbuild/apple/build/AppleBuild.InTree.targets b/src/mono/msbuild/apple/build/AppleBuild.InTree.targets
index d8519a2114822..3d982701bf8b6 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.InTree.targets
+++ b/src/mono/msbuild/apple/build/AppleBuild.InTree.targets
@@ -13,7 +13,7 @@
-
+
<_LocalMicrosoftNetCoreAppRuntimePackDir>$(MicrosoftNetCoreAppRuntimePackDir)
diff --git a/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props b/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props
index 0c66b9186ee63..819d61d9a9a8d 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props
+++ b/src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props
@@ -23,7 +23,8 @@
<_NetCoreAppCurrent>net8.0
- <_NetCoreAppToolCurrent>net8.0
+ $(_NetCoreAppCurrent)
+ <_NetCoreAppToolCurrent>$(_NetCoreAppCurrent)
false
@@ -56,6 +57,15 @@
$([MSBuild]::NormalizeDirectory($(BuildBaseDir), 'LibraryBuilder'))
$([MSBuild]::NormalizePath($(BuildBaseDir), 'cross'))
+ $([MSBuild]::NormalizeDirectory('$(BuildBaseDir)', 'ilc'))
+ $([MSBuild]::NormalizePath('$(BuildBaseDir)', 'BuildIntegration'))
+ $([MSBuild]::NormalizePath('$(ILCompilerTargetsDir)', 'Microsoft.DotNet.ILCompiler.SingleEntry.targets'))
+ $(CoreCLRILCompilerDir)
+ $([MSBuild]::NormalizeDirectory('$(BuildBaseDir)', 'aotsdk'))
+ $(MicrosoftNetCoreAppRuntimePackLibDir)
+ $(MicrosoftNetCoreAppRuntimePackNativeDir)
+ $([MSBuild]::NormalizePath('$(BuildBaseDir)', 'microsoft.net.illink.tasks', 'build', 'Microsoft.NET.ILLink.targets'))
+ $([MSBuild]::NormalizePath('$(BuildBaseDir)', 'microsoft.net.illink.tasks', 'tools', '$(_NetCoreAppCurrent)', 'ILLink.Tasks.dll'))
<_MonoAotCrossCompilerPath>$([MSBuild]::NormalizePath($(MonoAotCrossDir), 'mono-aot-cross'))
<_MonoAotCrossCompilerPath Condition="$([MSBuild]::IsOSPlatform('WINDOWS'))">$(_MonoAotCrossCompilerPath).exe
diff --git a/src/mono/msbuild/apple/build/AppleBuild.props b/src/mono/msbuild/apple/build/AppleBuild.props
index 8bb9e4c97480f..860ab8c6976af 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.props
+++ b/src/mono/msbuild/apple/build/AppleBuild.props
@@ -21,6 +21,10 @@
<_IsLibraryMode Condition="'$(UseNativeAOTRuntime)' != 'true' and '$(NativeLib)' != ''">true
+ <_AotCompileTargetName Condition="'$(UseNativeAOTRuntime)' == 'true'">_AppleNativeAotCompile
+ <_AotCompileTargetName Condition="'$(UseNativeAOTRuntime)' != 'true'">_AppleAotCompile
+ ComputeIlcCompileInputs;SetupOSSpecificProps;PrepareForILLink
+
Publish
_InitializeCommonProperties;
@@ -28,7 +32,7 @@
_AppleResolveReferences;
_ScanAssembliesDecideLightweightMarshaler;
$(_ProcessRuntimeComponentsForLibraryMode);
- _AppleAotCompile;
+ $(_AotCompileTargetName);
_BuildNativeLibrary;
_AppleGenerateAppBundle;
_AfterAppleBuild
diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets
index a435e8aad42eb..936bb275516e1 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.targets
+++ b/src/mono/msbuild/apple/build/AppleBuild.targets
@@ -2,7 +2,8 @@
$(GenerateAppBundle)
true
- false
+
+ false
<_ProcessRuntimeComponentsForLibraryMode Condition="'$(_IsLibraryMode)' == 'true'">_ProcessRuntimeComponentsForLibraryMode
false
@@ -16,6 +17,11 @@
+
+
+
@@ -47,13 +53,13 @@
$([MSBuild]::NormalizeDirectory('$(OutDir)', 'Bundle'))
$(AppleBundleDir)
- <_MonoHeaderPath>$([MSBuild]::NormalizeDirectory($(MicrosoftNetCoreAppRuntimePackRidNativeDir), 'include', 'mono-2.0'))
+ <_MonoHeaderPath Condition="'$(UseNativeAOTRuntime)' != 'true'">$([MSBuild]::NormalizeDirectory($(MicrosoftNetCoreAppRuntimePackRidNativeDir), 'include', 'mono-2.0'))
<_AotModuleTablePath>$(AppleBundleDir)\modules.m
$(AssemblyName)
- marshal-ilgen
+ marshal-ilgen
@@ -75,7 +81,7 @@
<_AppleRuntimeConfigFilePath Condition="'$(_AppleRuntimeConfigFilePath)' == ''">$([MSBuild]::NormalizePath($(AppleBuildDir), '$(AssemblyName).runtimeconfig.json'))
<_ParsedRuntimeConfigFilePath Condition="'$(_ParsedRuntimeConfigFilePath)' == ''">$([MSBuild]::NormalizePath($(AppleBuildDir), 'runtimeconfig.bin'))
- true
+ true
@@ -100,7 +106,7 @@
-
+
true
@@ -269,6 +275,8 @@
+
+
+
+ <_LinkerFlagsToDrop Include="@(NativeFramework->'-framework %(Identity)')" />
+
+
+
+
-
-
- true
-
+
$(HELIX_WORKITEM_ROOT)\apple_build\
$(MSBuildThisFileDirectory)..\apple_build\
- true
- $(TestRootDir)..\publish\
+ $([System.IO.Path]::GetFullPath('$(TestRootDir)..\publish\'))
$(OriginalPublishDir)..\extraFiles\
- $(TestRootDir)\obj\
-
_PrepareForAppleBuildAppOnHelix;$(AppleBuildDependsOn);_AfterAppleBuildOnHelix
+
- <_PropsFile>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).props
+
+ $(OriginalPublishDir)
+ false
+ true
+ static
+ true
+ false
+ <_IsApplePlatform>true
+ true
+ <_targetOS>$(TargetOS)
-
+
+
+
+
+
@@ -26,17 +33,13 @@
Importance="High" />
+ true
+ AppleTestRunner.dll
+
$(OriginalPublishDir)
$(TestRootDir)AppBundle\
-
- $(OriginalPublishDir)AppleTestRunner.dll
- true
-
- diagnostics_tracing;marshal-ilgen
- 127.0.0.1:9000,nosuspend,listen
-
@@ -48,6 +51,11 @@
+
+
+ diagnostics_tracing;marshal-ilgen
+ 127.0.0.1:9000,nosuspend,listen
+
-
-
diff --git a/src/mono/sample/iOS-NativeAOT/Program.csproj b/src/mono/sample/iOS-NativeAOT/Program.csproj
index c38c3ca5d13c8..45b0a262bdea7 100644
--- a/src/mono/sample/iOS-NativeAOT/Program.csproj
+++ b/src/mono/sample/iOS-NativeAOT/Program.csproj
@@ -8,14 +8,19 @@
true
$(TargetOS)-$(TargetArchitecture)
HelloiOS
+ true
true
+ false
static
true
false
- Compile;ComputeIlcCompileInputs;SetupOSSpecificProps;PrepareForILLink
+
+
+
+
true
$(MSBuildWarningsAsErrors);NU1603
@@ -26,12 +31,14 @@
+ <_ExcludeFromAppDir Include=".dll" />
+ <_ExcludeFromAppDir Include=".json" />
+
+ <_ExcludeFromAppDir Condition="'$(PublishAotUsingRuntimePack)' == 'true'"
+ Include="libbootstrapper.o" />
-
-
-
@@ -53,56 +60,6 @@
-
-
-
- $(MSBuildThisFileDirectory)$(OutputPath)\Bundle
- True
- false
- adhoc
- false
-
-
-
- <_LinkerFlagsToDrop Include="@(NativeFramework->'-framework %(Identity)')" />
-
-
- <_NativeDependencies Include="%(ManagedBinary.IlcOutputFile)" />
- <_ExcludeFromAppDir Include=".dll" />
- <_ExcludeFromAppDir Include=".json" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/tasks/AppleAppBuilder/AppleAppBuilder.cs b/src/tasks/AppleAppBuilder/AppleAppBuilder.cs
index 66dbf848d654f..5315533105a0a 100644
--- a/src/tasks/AppleAppBuilder/AppleAppBuilder.cs
+++ b/src/tasks/AppleAppBuilder/AppleAppBuilder.cs
@@ -201,9 +201,6 @@ public void ValidateRuntimeSelection()
if (!string.IsNullOrEmpty(MainLibraryFileName))
throw new ArgumentException($"Property \"{nameof(MainLibraryFileName)}\" is not supported with NativeAOT runtime and will be ignored.");
- if (UseConsoleUITemplate)
- throw new ArgumentException($"Property \"{nameof(UseConsoleUITemplate)}\" is not supported with NativeAOT runtime and will be ignored.");
-
if (ForceInterpreter)
throw new ArgumentException($"Property \"{nameof(ForceInterpreter)}\" is not supported with NativeAOT runtime and will be ignored.");
diff --git a/src/tasks/AppleAppBuilder/Templates/main-console.m b/src/tasks/AppleAppBuilder/Templates/main-console.m
index cc13485761bcb..7db0bc3ac280a 100644
--- a/src/tasks/AppleAppBuilder/Templates/main-console.m
+++ b/src/tasks/AppleAppBuilder/Templates/main-console.m
@@ -2,8 +2,13 @@
// The .NET Foundation licenses this file to you under the MIT license.
#import
+#if !USE_NATIVE_AOT
#import "runtime.h"
-#include
+#else
+#import
+#import "util.h"
+extern int __managed__Main(int argc, char* argv[]);
+#endif
@interface ViewController : UIViewController
@end
@@ -58,7 +63,19 @@ - (void)viewDidLoad {
[self.view addSubview:summaryLabel];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+#if !USE_NATIVE_AOT
mono_ios_runtime_init ();
+#else
+#if INVARIANT_GLOBALIZATION
+ setenv ("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "1", TRUE);
+#endif
+ char **managed_argv;
+ int managed_argc = get_managed_args (&managed_argv);
+ int ret_val = __managed__Main (managed_argc, managed_argv);
+ free_managed_args (&managed_argv, managed_argc);
+ os_log_info (OS_LOG_DEFAULT, EXIT_CODE_TAG ": %d", ret_val);
+ exit (ret_val);
+#endif
});
}
diff --git a/src/tests/FunctionalTests/iOS/Device/AOT-LLVM/ILLink.Descriptors.xml b/src/tests/FunctionalTests/iOS/Device/AOT/ILLink.Descriptors.xml
similarity index 68%
rename from src/tests/FunctionalTests/iOS/Device/AOT-LLVM/ILLink.Descriptors.xml
rename to src/tests/FunctionalTests/iOS/Device/AOT/ILLink.Descriptors.xml
index 5ddcdac6d9f45..48d9154400982 100644
--- a/src/tests/FunctionalTests/iOS/Device/AOT-LLVM/ILLink.Descriptors.xml
+++ b/src/tests/FunctionalTests/iOS/Device/AOT/ILLink.Descriptors.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/src/tests/FunctionalTests/iOS/Device/AOT-LLVM/Program.cs b/src/tests/FunctionalTests/iOS/Device/AOT/Program.cs
similarity index 100%
rename from src/tests/FunctionalTests/iOS/Device/AOT-LLVM/Program.cs
rename to src/tests/FunctionalTests/iOS/Device/AOT/Program.cs
diff --git a/src/tests/FunctionalTests/iOS/Device/AOT-LLVM/iOS.Device.Aot-Llvm.Test.csproj b/src/tests/FunctionalTests/iOS/Device/AOT/iOS.Device.Aot.Test.csproj
similarity index 63%
rename from src/tests/FunctionalTests/iOS/Device/AOT-LLVM/iOS.Device.Aot-Llvm.Test.csproj
rename to src/tests/FunctionalTests/iOS/Device/AOT/iOS.Device.Aot.Test.csproj
index 1ece8333a99f1..7d5a64f63c009 100644
--- a/src/tests/FunctionalTests/iOS/Device/AOT-LLVM/iOS.Device.Aot-Llvm.Test.csproj
+++ b/src/tests/FunctionalTests/iOS/Device/AOT/iOS.Device.Aot.Test.csproj
@@ -1,17 +1,22 @@
-
Exe
- false
- true
+ bin
true
$(NetCoreAppCurrent)
+ $(TargetOS)-$(TargetArchitecture)
ios
- iOS.Device.Aot-Llvm.Test.dll
false
42
- true
+ true
+ true
+ true
+
+
+
true
+ iOS.Device.Aot.Test.dll
+ false
diff --git a/src/tests/FunctionalTests/iOS/Device/Directory.Build.props b/src/tests/FunctionalTests/iOS/Device/Directory.Build.props
new file mode 100644
index 0000000000000..d9788f8f84ee4
--- /dev/null
+++ b/src/tests/FunctionalTests/iOS/Device/Directory.Build.props
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ true
+ true
+
+
+
+
\ No newline at end of file
diff --git a/src/tests/FunctionalTests/iOS/Device/Directory.Build.targets b/src/tests/FunctionalTests/iOS/Device/Directory.Build.targets
new file mode 100644
index 0000000000000..2240a7ad27f45
--- /dev/null
+++ b/src/tests/FunctionalTests/iOS/Device/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/tests/FunctionalTests/iOS/Device/ExportManagedSymbols/iOS.Device.ExportManagedSymbols.Test.csproj b/src/tests/FunctionalTests/iOS/Device/ExportManagedSymbols/iOS.Device.ExportManagedSymbols.Test.csproj
index be52903a35524..51ebc622ecc02 100644
--- a/src/tests/FunctionalTests/iOS/Device/ExportManagedSymbols/iOS.Device.ExportManagedSymbols.Test.csproj
+++ b/src/tests/FunctionalTests/iOS/Device/ExportManagedSymbols/iOS.Device.ExportManagedSymbols.Test.csproj
@@ -1,23 +1,29 @@
-
Exe
- false
- true
- true
$(NetCoreAppCurrent)
- iOS
- iOS.Device.ExportManagedSymbols.Test.dll
+ $(TargetOS)-$(TargetArchitecture)
+ ios
false
42
- true
- true
+ true
+ true
+ true
$(MSBuildProjectDirectory)/main.m
+
+ true
+ iOS.Device.ExportManagedSymbols.Test.dll
+ false
+
+
-
+
+
+
+
diff --git a/src/tests/FunctionalTests/tvOS/Device/AOT-LLVM/tvOS.Device.Aot-Llvm.Test.csproj b/src/tests/FunctionalTests/tvOS/Device/AOT-LLVM/tvOS.Device.Aot-Llvm.Test.csproj
deleted file mode 100644
index 2cdbe1ddf132c..0000000000000
--- a/src/tests/FunctionalTests/tvOS/Device/AOT-LLVM/tvOS.Device.Aot-Llvm.Test.csproj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- Exe
- false
- true
- true
- $(NetCoreAppCurrent)
- tvos
- tvOS.Device.Aot-Llvm.Test.dll
- false
- 42
- true
- true
-
-
-
-
-
-
diff --git a/src/tests/FunctionalTests/tvOS/Device/AOT/Directory.Build.props b/src/tests/FunctionalTests/tvOS/Device/AOT/Directory.Build.props
new file mode 100644
index 0000000000000..27d4e278a800c
--- /dev/null
+++ b/src/tests/FunctionalTests/tvOS/Device/AOT/Directory.Build.props
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ true
+ true
+
+
+
+
\ No newline at end of file
diff --git a/src/tests/FunctionalTests/tvOS/Device/AOT/Directory.Build.targets b/src/tests/FunctionalTests/tvOS/Device/AOT/Directory.Build.targets
new file mode 100644
index 0000000000000..d8ef266b5da4e
--- /dev/null
+++ b/src/tests/FunctionalTests/tvOS/Device/AOT/Directory.Build.targets
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/tests/FunctionalTests/tvOS/Device/AOT-LLVM/Program.cs b/src/tests/FunctionalTests/tvOS/Device/AOT/Program.cs
similarity index 100%
rename from src/tests/FunctionalTests/tvOS/Device/AOT-LLVM/Program.cs
rename to src/tests/FunctionalTests/tvOS/Device/AOT/Program.cs
diff --git a/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj b/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj
new file mode 100644
index 0000000000000..0e2f71fe06b3d
--- /dev/null
+++ b/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj
@@ -0,0 +1,30 @@
+
+
+ Exe
+ bin
+ true
+ $(NetCoreAppCurrent)
+ $(TargetOS)-$(TargetArchitecture)
+ tvos
+ false
+ 42
+ true
+ true
+ true
+
+
+
+ true
+ tvOS.Device.Aot.Test.dll
+ false
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/build.proj b/src/tests/build.proj
index 093828eb4172e..50045cb4ebafa 100644
--- a/src/tests/build.proj
+++ b/src/tests/build.proj
@@ -342,6 +342,7 @@
$(AssemblyName)
true
true
+ false