diff --git a/src/mono/msbuild/apple/build/AppleBuild.targets b/src/mono/msbuild/apple/build/AppleBuild.targets
index 1c3734f3d82655..d72b97832118a5 100644
--- a/src/mono/msbuild/apple/build/AppleBuild.targets
+++ b/src/mono/msbuild/apple/build/AppleBuild.targets
@@ -318,6 +318,7 @@
NativeAOT
CoreCLR
MonoVM
+
<_MergedWrapperMarker Include="$(TestBinDir)**\*.MergedTestAssembly" Exclude="$(TestBinDir)**\supportFiles\*.MergedTestAssembly" />
+ <_MergedWrapperMarker Include="$(TestBinDir)**\*.MergedTestAssemblyForStress" Exclude="$(TestBinDir)**\supportFiles\*.MergedTestAssemblyForStress" />
- <_MergedWrapperMarker Update="@(_MergedWrapperMarker)">
+ <_MergedWrapperMarker>
$([System.IO.Path]::ChangeExtension('%(Identity)', '.$(TestScriptExtension)'))
%(RootDir)%(Directory)$(MobileAppBundleDirName)/$(_AppBundleRunScriptName).$(TestScriptExtension)
@@ -555,11 +556,11 @@
<_MergedWrapperDirectory>%(_MergedWrapperMarker.RootDir)%(Directory)
- <_MergedWrapperName>%(_MergedWrapperMarker.FileName)
+ <_MergedWrapperName>$([System.Text.RegularExpressions.Regex]::Replace('%(_MergedWrapperMarker.FileName)', '\.MergedTestAssembly(ForStress)?\.\d+\.\d+$', ''))
- iphone
+ iphoneos
iphonesimulator
appletvos
appletvsimulator
@@ -578,6 +579,8 @@
<_TestExclusionListPlaceholder Include="@(_MergedPayloadFiles)" Condition="$([System.String]::new('%(FileName)').EndsWith('TestExclusionList'))" />
+ <_MergedPayloadFiles Include="$(_MergedWrapperDirectory)ExpectedExitCode.txt" Condition="Exists('$(_MergedWrapperDirectory)ExpectedExitCode.txt')" FileRelativeToPayloadsRootDirectory="ExpectedExitCode.txt" />
+ <_MergedPayloadFiles Include="$(_MergedWrapperDirectory)$(_MergedWrapperName).XHarnessNoRunner" Condition="Exists('$(_MergedWrapperDirectory)$(_MergedWrapperName).XHarnessNoRunner')" FileRelativeToPayloadsRootDirectory="$(_MergedWrapperName).XHarnessNoRunner" />
<_MergedPayloadFiles Remove="@(_TestExclusionListPlaceholder)" />
@@ -595,7 +598,7 @@
<_MergedWrapperDirectory>%(_MergedWrapperMarker.RootDir)%(Directory)
- <_MergedWrapperName>%(_MergedWrapperMarker.FileName)
+ <_MergedWrapperName>$([System.Text.RegularExpressions.Regex]::Replace('%(_MergedWrapperMarker.FileName)', '\.MergedTestAssembly(ForStress)?\.\d+\.\d+$', ''))
@@ -606,6 +609,8 @@
MakeRelative function calls Escape function internally that replaces all the Unicode characters with %. -->
$([System.IO.Path]::GetRelativePath('$(_MergedWrapperDirectory)$(MobileAppBundleDirName)/', %(FullPath)))
+ <_MergedPayloadFiles Include="$(_MergedWrapperDirectory)ExpectedExitCode.txt" Condition="Exists('$(_MergedWrapperDirectory)ExpectedExitCode.txt')" FileRelativeToPayloadsRootDirectory="ExpectedExitCode.txt" />
+ <_MergedPayloadFiles Include="$(_MergedWrapperDirectory)$(_MergedWrapperName).XHarnessNoRunner" Condition="Exists('$(_MergedWrapperDirectory)$(_MergedWrapperName).XHarnessNoRunner')" FileRelativeToPayloadsRootDirectory="$(_MergedWrapperName).XHarnessNoRunner" />
<_TestExclusionListPlaceholder Include="@(_MergedPayloadFiles)" Condition="$([System.String]::new('%(FileName)').EndsWith('TestExclusionList'))" />
<_MergedPayloadFiles Remove="@(_TestExclusionListPlaceholder)" />
@@ -629,7 +634,7 @@
-
+
$([MSBuild]::MakeRelative($(LegacyPayloadsRootDirectory), %(FullPath)))
%(FullPath)
@@ -646,7 +651,7 @@
Condition="'$(TargetsBrowser)' == 'true' or ('$(TargetsAppleMobile)' == 'true' and '$(NeedsToBuildAppsOnHelix)' == 'true')">
-
+
$([MSBuild]::MakeRelative($(MergedPayloadsRootDirectory), %(FullPath)))
%(FullPath)
@@ -865,6 +870,13 @@
$(MergedPayloadsRootDirectory)%(FileName)%(Extension)/%(ApkFileName).apk
$(MergedPayloadsRootDirectory)%(FileName)%(Extension)/%(FileName)%(Extension).app
+
+ $([System.IO.File]::ReadAllText('$(MergedPayloadsRootDirectory)%(FileName)%(Extension)/ExpectedExitCode.txt').Trim())
+
+
+
+ false
+
@@ -998,7 +1010,7 @@
$([System.TimeSpan]::FromMinutes($(TimeoutPerTestCollectionInMinutes)))
coreclr_tests.run.$(TargetOS).$(TargetArchitecture).$(Configuration).mch;coreclr_tests.run.$(TargetOS).$(TargetArchitecture).$(Configuration).log
-
+
$([System.TimeSpan]::FromMinutes($(TimeoutPerTestCollectionInMinutes)))
dotnet $(XUnitRunnerDll) %(XUnitWrapperDlls) $(XUnitRunnerArgs)
@@ -1011,10 +1023,6 @@
$([System.TimeSpan]::FromMinutes($(TimeoutPerTestCollectionInMinutes)))
-
- $([System.IO.File]::ReadAllText('%(PayloadDirectory)/ExpectedExitCode.txt').Trim())
-
-
$(AppleTestTarget)
$([System.TimeSpan]::FromMinutes($(TimeoutPerTestCollectionInMinutes)))
diff --git a/src/tests/Common/mergedrunnermobile.targets b/src/tests/Common/mergedrunnermobile.targets
index 2ae7a095d9fbbf..b0ee8ea42617e6 100644
--- a/src/tests/Common/mergedrunnermobile.targets
+++ b/src/tests/Common/mergedrunnermobile.targets
@@ -9,6 +9,17 @@
false
+
+
+ false
+ 100
+ true
+
+
diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets
index ca0c6b3bb4e082..74c89c69514ca5 100644
--- a/src/tests/Directory.Build.targets
+++ b/src/tests/Directory.Build.targets
@@ -424,6 +424,9 @@
MergedTestAssembly
+
+ XHarnessNoRunner
+
NoMonoAot
diff --git a/src/tests/build.proj b/src/tests/build.proj
index 6869fcaa4a7698..207aeedaf6238c 100644
--- a/src/tests/build.proj
+++ b/src/tests/build.proj
@@ -381,6 +381,7 @@
+
diff --git a/src/tests/nativeaot/Directory.Build.props b/src/tests/nativeaot/Directory.Build.props
index 17342717f61c8e..1e08092b2bc7f1 100644
--- a/src/tests/nativeaot/Directory.Build.props
+++ b/src/tests/nativeaot/Directory.Build.props
@@ -5,5 +5,11 @@
true
+
+
+ true
diff --git a/src/tests/nativeaot/Directory.Build.targets b/src/tests/nativeaot/Directory.Build.targets
new file mode 100644
index 00000000000000..ba8535b823ebf5
--- /dev/null
+++ b/src/tests/nativeaot/Directory.Build.targets
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.cs b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.cs
index b1251f9fc382a6..9ca6bd9a34f251 100644
--- a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.cs
+++ b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.cs
@@ -4,52 +4,56 @@
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
+using Xunit;
namespace GenerateUnmanagedEntryPoints
{
- unsafe class Program
+ unsafe class Tests : IDisposable
{
[UnmanagedCallersOnly(EntryPoint = "MainAssemblyMethod")]
static void MainAssemblyMethod() => Console.WriteLine($"Hello from {nameof(MainAssemblyMethod)}");
- static int Main()
+ private IntPtr programHandle;
+
+ public Tests()
{
- IntPtr methodAddress = IntPtr.Zero;
- IntPtr programHandle = IntPtr.Zero;
-
programHandle = NativeLibrary.GetMainProgramHandle();
- if (programHandle == IntPtr.Zero)
- {
- return 1;
- }
-
- if (NativeLibrary.TryGetExport(programHandle, "MainAssemblyMethod", out methodAddress))
- {
- var MainAssemblyMethodPtr = (delegate* unmanaged ) methodAddress;
- MainAssemblyMethodPtr();
- }
- else
- {
- return 2;
- }
-
- if (NativeLibrary.TryGetExport(programHandle, "ReferencedAssembly1Method", out methodAddress))
- {
- var ReferencedAssembly1MethodPtr = (delegate* unmanaged ) methodAddress;
- ReferencedAssembly1MethodPtr();
- }
- else
- {
- return 3;
- }
-
- if (NativeLibrary.TryGetExport(programHandle, "ReferencedAssembly2Method", out methodAddress))
- {
- // must not be exposed from ReferencedAssembly2 assembly
- return 4;
- }
-
- return 100;
+ Assert.NotEqual(IntPtr.Zero, programHandle);
+ }
+
+ [Fact]
+ public void ExportFromMainAssembly_IsExported()
+ {
+ IntPtr methodAddress = IntPtr.Zero;
+ bool found = NativeLibrary.TryGetExport(programHandle, "MainAssemblyMethod", out methodAddress);
+ Assert.True(found);
+ Assert.NotEqual(IntPtr.Zero, methodAddress);
+ var MainAssemblyMethodPtr = (delegate* unmanaged)methodAddress;
+ MainAssemblyMethodPtr();
+ }
+
+ [Fact]
+ public void ExportFromUnmanagedEntryPointsAssembly_IsExported()
+ {
+ IntPtr methodAddress = IntPtr.Zero;
+ bool found = NativeLibrary.TryGetExport(programHandle, "ReferencedAssembly1Method", out methodAddress);
+ Assert.True(found);
+ Assert.NotEqual(IntPtr.Zero, methodAddress);
+ var ReferencedAssembly1MethodPtr = (delegate* unmanaged)methodAddress;
+ ReferencedAssembly1MethodPtr();
+ }
+
+ [Fact]
+ public void ExportFromOtherAssembly_IsNotExported()
+ {
+ IntPtr methodAddress = IntPtr.Zero;
+ bool found = NativeLibrary.TryGetExport(programHandle, "ReferencedAssembly2Method", out methodAddress);
+ Assert.False(found);
+ Assert.Equal(IntPtr.Zero, methodAddress);
+ }
+
+ public void Dispose()
+ {
}
}
-}
\ No newline at end of file
+}
diff --git a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.csproj b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.csproj
index 25d573dfd83e72..230a4465ee75b2 100644
--- a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.csproj
+++ b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/GenerateUnmanagedEntryPoints.csproj
@@ -8,8 +8,6 @@
Disable for now.
-->
true
- true
- false
@@ -22,5 +20,4 @@
-
diff --git a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly1/ReferencedAssembly1.csproj b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly1/ReferencedAssembly1.csproj
index 174d5eb434bb78..fb117a611dcf8e 100644
--- a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly1/ReferencedAssembly1.csproj
+++ b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly1/ReferencedAssembly1.csproj
@@ -1,6 +1,7 @@
+ SharedLibrary
Library
diff --git a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly2/ReferencedAssembly2.csproj b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly2/ReferencedAssembly2.csproj
index 7cf16476f0940c..51b1eacbdce6f0 100644
--- a/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly2/ReferencedAssembly2.csproj
+++ b/src/tests/nativeaot/GenerateUnmanagedEntryPoints/ReferencedAssembly2/ReferencedAssembly2.csproj
@@ -1,6 +1,7 @@
+ SharedLibrary
Library
diff --git a/src/tests/nativeaot/SmokeTests/ComWrappers/CMakeLists.txt b/src/tests/nativeaot/SmokeTests/ComWrappers/CMakeLists.txt
deleted file mode 100644
index a631acce2c89d0..00000000000000
--- a/src/tests/nativeaot/SmokeTests/ComWrappers/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-project (ComWrappersNative)
-include_directories(${INC_PLATFORM_DIR})
-
-add_library (ComWrappersNative SHARED ComWrappersNative.cpp)
-
-# add the install targets
-install (TARGETS ComWrappersNative DESTINATION bin)
diff --git a/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappers.cs b/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappers.cs
deleted file mode 100644
index c4eb54cd880774..00000000000000
--- a/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappers.cs
+++ /dev/null
@@ -1,260 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace ComWrappersTests
-{
- internal class Program
- {
- static ComWrappers GlobalComWrappers;
-
- [DynamicDependency(DynamicallyAccessedMemberTypes.PublicMethods, typeof(IComInterface))]
- public static int Main()
- {
- TestComInteropNullPointers();
- TestComInteropRegistrationRequired();
- GlobalComWrappers = new SimpleComWrapper();
- ComWrappers.RegisterForMarshalling(GlobalComWrappers);
- TestComInteropReleaseProcess();
- TestRCWRoundTripRequireUnwrap();
- TestRCWCached();
- TestRCWRoundTrip();
-
- TestComInteropCCWCreation();
- TestRCWNonRoundTripUnique();
- return 100;
- }
-
- public static void ThrowIfNotEquals(T expected, T actual, string message)
- {
- if (!expected.Equals(actual))
- {
- message += "\nExpected: " + expected.ToString() + "\n";
- message += "Actual: " + actual.ToString() + "\n";
- throw new Exception(message);
- }
- }
-
- public static void ThrowIfNotEquals(bool expected, bool actual, string message)
- {
- ThrowIfNotEquals(expected ? 1 : 0, actual ? 1 : 0, message);
- }
-
- [DllImport("ComWrappersNative", CallingConvention = CallingConvention.StdCall)]
- static extern bool IsNULL(IComInterface foo);
-
- [DllImport("ComWrappersNative", CallingConvention = CallingConvention.StdCall)]
- static extern int CaptureComPointer(IComInterface foo);
-
- [DllImport("ComWrappersNative", CallingConvention = CallingConvention.StdCall)]
- static extern int RetrieveCapturedComPointer(out IComInterface foo);
-
- [DllImport("ComWrappersNative", EntryPoint="RetrieveCapturedComPointer", CallingConvention = CallingConvention.StdCall)]
- static extern int RetrieveCapturedComPointerRaw(out IntPtr foo);
-
- [DllImport("ComWrappersNative", CallingConvention = CallingConvention.StdCall)]
- static extern void ReleaseComPointer();
-
- [DllImport("ComWrappersNative", CallingConvention = CallingConvention.StdCall)]
- static extern int BuildComPointer(out IComInterface foo);
-
- [DllImport("ComWrappersNative", CallingConvention = CallingConvention.StdCall, PreserveSig = false, EntryPoint="BuildComPointer")]
- static extern IComInterface BuildComPointerNoPreserveSig();
-
- public static void TestComInteropNullPointers()
- {
- Console.WriteLine("Testing Marshal APIs for COM interfaces");
- IComInterface comPointer = null;
- var result = IsNULL(comPointer);
- ThrowIfNotEquals(true, IsNULL(comPointer), "COM interface marshalling null check failed");
- }
-
- public static void TestComInteropRegistrationRequired()
- {
- Console.WriteLine("Testing COM Interop registration process");
- ComObject target = new ComObject();
- try
- {
- CaptureComPointer(target);
- throw new Exception("Cannot work without ComWrappers.RegisterForMarshalling called");
- }
- catch (NotSupportedException)
- {
- }
- }
-
- public static void TestComInteropReleaseProcess()
- {
- Console.WriteLine("Testing RCW release process");
- WeakReference comPointerHolder = CreateComReference();
-
- GC.Collect();
- ThrowIfNotEquals(true, comPointerHolder.IsAlive, ".NET object should be alive");
-
- ReleaseComPointer();
-
- GC.Collect();
- ThrowIfNotEquals(false, comPointerHolder.IsAlive, ".NET object should be disposed by then");
- }
-
- public static void TestRCWRoundTripRequireUnwrap()
- {
- Console.WriteLine("Testing RCW round-trip process");
- var target = new ComObject();
- int result = CaptureComPointer(target);
- ThrowIfNotEquals(0, result, "Seems to be COM marshalling behave strange.");
- result = RetrieveCapturedComPointerRaw(out var comPtr);
- var roundTripObject = GlobalComWrappers.GetOrCreateObjectForComInstance(comPtr, CreateObjectFlags.Unwrap);
- ThrowIfNotEquals(0, result, "Seems to be COM marshalling behave strange.");
- if (roundTripObject != target)
- {
- throw new Exception("RCW should round-trip");
- }
- }
-
- public static void TestRCWRoundTrip()
- {
- var target = new ComObject();
- int result = CaptureComPointer(target);
- ThrowIfNotEquals(0, result, "Seems to be COM marshalling behave strange.");
- result = RetrieveCapturedComPointer(out var capturedObject);
- ThrowIfNotEquals(0, result, "Seems to be COM marshalling behave strange.");
- if (capturedObject != target)
- {
- throw new Exception("Should round-trip");
- }
- }
-
- public static void TestRCWCached()
- {
- Console.WriteLine("Testing RCW cache process");
- ComWrappers wrapper = new SimpleComWrapper();
- var target = new ComObject();
- var comPtr = wrapper.GetOrCreateComInterfaceForObject(target, CreateComInterfaceFlags.None);
- var comPtr2 = wrapper.GetOrCreateComInterfaceForObject(target, CreateComInterfaceFlags.None);
- if (comPtr != comPtr2)
- {
- throw new Exception("RCW should round-trip");
- }
- }
-
- public static void TestRCWNonRoundTripUnique()
- {
- Console.WriteLine("Testing CCW uniqueness process");
- ComWrappers wrapper = new SimpleComWrapper();
- var target = new ComObject();
- var comPtr = wrapper.GetOrCreateComInterfaceForObject(target, CreateComInterfaceFlags.None);
- var ifPtr = wrapper.GetOrCreateObjectForComInstance(comPtr, CreateObjectFlags.UniqueInstance);
- if (ifPtr == target)
- {
- throw new Exception("RCW should not round-trip for unique instances");
- }
- }
-
- public static void TestComInteropCCWCreation()
- {
- Console.WriteLine("Testing CCW release process");
- int result = BuildComPointer(out var comPointer);
- ThrowIfNotEquals(0, result, "Seems to be COM marshalling behave strange.");
- comPointer.DoWork(11);
-
- comPointer = BuildComPointerNoPreserveSig();
- comPointer.DoWork(22);
- }
-
- [MethodImpl(MethodImplOptions.NoInlining)]
- private static WeakReference CreateComReference()
- {
- ComObject target = new ComObject();
- WeakReference comPointerHolder = new WeakReference(target);
-
- int result = CaptureComPointer(target);
- ThrowIfNotEquals(0, result, "Seems to be COM marshalling behave strange.");
- ThrowIfNotEquals(11, target.TestResult, "Call to method should work");
-
- return comPointerHolder;
- }
- }
-
- [ComImport]
- [ComVisible(true)]
- [Guid("111e91ef-1887-4afd-81e3-70cf08e715d8")]
- [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
- public interface IComInterface
- {
- int DoWork(int param);
- }
-
- public class ComObject : IComInterface
- {
- public int TestResult;
- public int DoWork(int param)
- {
- this.TestResult += param;
- return 0;
- }
- }
-
- class NativeComObjectWrapper: IComInterface
- {
- private IntPtr externalComObject;
-
- public NativeComObjectWrapper(IntPtr externalComObject) => this.externalComObject = externalComObject;
-
- public unsafe int DoWork(int param)
- {
- IntPtr* comDispatch = (IntPtr*)externalComObject;
- IntPtr* vtbl = (IntPtr*)comDispatch[0];
- return ((delegate* unmanaged)vtbl[3])(externalComObject, param);
- }
- }
-
- internal unsafe class SimpleComWrapper : ComWrappers
- {
- static ComInterfaceEntry* wrapperEntry;
-
- static SimpleComWrapper()
- {
- IntPtr* vtbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(IComInterface), 4 * sizeof(IntPtr));
- GetIUnknownImpl(out vtbl[0], out vtbl[1], out vtbl[2]);
- vtbl[3] = (IntPtr)(delegate* unmanaged)&IComInterfaceProxy.DoWork;
-
- var comInterfaceEntryMemory = RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(IComInterface), sizeof(ComInterfaceEntry));
- wrapperEntry = (ComInterfaceEntry*)comInterfaceEntryMemory;
- wrapperEntry->IID = new Guid("111e91ef-1887-4afd-81e3-70cf08e715d8");
- wrapperEntry->Vtable = (IntPtr)vtbl;
- }
-
- protected override unsafe ComInterfaceEntry* ComputeVtables(object obj, CreateComInterfaceFlags flags, out int count)
- {
- if (obj is not IComInterface)
- throw new Exception();
- count = 1;
- return wrapperEntry;
- }
-
- protected override object CreateObject(IntPtr externalComObject, CreateObjectFlags flags)
- {
- return new NativeComObjectWrapper(externalComObject);
- }
-
- protected override void ReleaseObjects(System.Collections.IEnumerable objects)
- {
- }
- }
-
- internal unsafe class IComInterfaceProxy
- {
- [UnmanagedCallersOnly]
- public static int DoWork(IntPtr thisPtr, int param)
- {
- var inst = ComWrappers.ComInterfaceDispatch.GetInstance((ComWrappers.ComInterfaceDispatch*)thisPtr);
- return inst.DoWork(param);
- }
- }
-}
diff --git a/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappers.csproj b/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappers.csproj
deleted file mode 100644
index 5e9547d9bc9379..00000000000000
--- a/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappers.csproj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
- Exe
- true
- true
-
-
- $(NoWarn);IL2050
- true
- false
-
-
-
-
-
-
-
-
-
-
diff --git a/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappersNative.cpp b/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappersNative.cpp
deleted file mode 100644
index 164d677fa94cb4..00000000000000
--- a/src/tests/nativeaot/SmokeTests/ComWrappers/ComWrappersNative.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#include
-#include
-#include
-#ifdef TARGET_WINDOWS
-#include
-#define DLL_EXPORT extern "C" __declspec(dllexport)
-#else
-#include
-#define DLL_EXPORT extern "C" __attribute((visibility("default")))
-#endif
-
-#ifndef TARGET_WINDOWS
-#define __stdcall
-#endif
-
-DLL_EXPORT bool __stdcall IsNULL(void *a)
-{
- return a == NULL;
-}
-
-#ifdef TARGET_WINDOWS
-class IComInterface: public IUnknown
-{
-public:
- virtual HRESULT STDMETHODCALLTYPE DoWork(int param) = 0;
-};
-GUID IID_IComInterface = { 0x111e91ef, 0x1887, 0x4afd, { 0x81, 0xe3, 0x70, 0xcf, 0x08, 0xe7, 0x15, 0xd8 } };
-
-class NativeComInterface: public IComInterface
-{
- int _counter = 1;
- int _value = 45;
-public:
- HRESULT STDMETHODCALLTYPE DoWork(int param) override
- {
- _value += param;
- return S_OK;
- }
-
- ULONG STDMETHODCALLTYPE AddRef() override
- {
- _counter++;
- return S_OK;
- }
-
- ULONG STDMETHODCALLTYPE Release() override
- {
- _counter--;
- return S_OK;
- }
-
- HRESULT STDMETHODCALLTYPE QueryInterface(
- REFIID InterfaceId,
- PVOID* Interface) override
- {
- if (InterfaceId == IID_IUnknown ||
- InterfaceId == IID_IComInterface)
- {
- *Interface = (IComInterface*)this;
- AddRef();
- return S_OK;
- }
- else
- {
- *Interface = nullptr;
- return E_NOINTERFACE;
- }
- }
-};
-
-IComInterface* capturedComObject;
-DLL_EXPORT int __stdcall CaptureComPointer(IComInterface* pUnk)
-{
- capturedComObject = pUnk;
- return capturedComObject->DoWork(11);
-}
-
-DLL_EXPORT int __stdcall RetrieveCapturedComPointer(IComInterface** ppUnk)
-{
- *ppUnk = capturedComObject;
- return S_OK;
-}
-
-DLL_EXPORT int __stdcall BuildComPointer(IComInterface** ppUnk)
-{
- *ppUnk = new NativeComInterface();
- return S_OK;
-}
-
-DLL_EXPORT void ReleaseComPointer()
-{
- capturedComObject->Release();
-}
-#endif
diff --git a/src/tests/nativeaot/SmokeTests/ComWrappers/rd.xml b/src/tests/nativeaot/SmokeTests/ComWrappers/rd.xml
deleted file mode 100644
index 352d58c52e9247..00000000000000
--- a/src/tests/nativeaot/SmokeTests/ComWrappers/rd.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/tests/nativeaot/StartupHook/StartupHook.csproj b/src/tests/nativeaot/StartupHook/StartupHook.csproj
index ed6e89a9fc27db..046dce277364a3 100644
--- a/src/tests/nativeaot/StartupHook/StartupHook.csproj
+++ b/src/tests/nativeaot/StartupHook/StartupHook.csproj
@@ -5,8 +5,8 @@
true
true
$(NoWarn);IL2026
- true
false
+ true
diff --git a/src/tests/nativeaot/nativeaot.csproj b/src/tests/nativeaot/nativeaot.csproj
deleted file mode 100644
index 9e307f7a15c0a2..00000000000000
--- a/src/tests/nativeaot/nativeaot.csproj
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/tests/xunit-wrappers.targets b/src/tests/xunit-wrappers.targets
index 41ea1cd7d936f8..9be469d94e447f 100644
--- a/src/tests/xunit-wrappers.targets
+++ b/src/tests/xunit-wrappers.targets
@@ -1,5 +1,6 @@
+