diff --git a/eng/testing/linker/project.csproj.template b/eng/testing/linker/project.csproj.template index e1ba296072c8d0..c9eeb18f2718c9 100644 --- a/eng/testing/linker/project.csproj.template +++ b/eng/testing/linker/project.csproj.template @@ -19,6 +19,10 @@ <_ExtraTrimmerArgs>{ExtraTrimmerArgs} $(_ExtraTrimmerArgs) + + {RuntimeHostConfigurationOptions} + + {AdditionalProjectReferences} diff --git a/eng/testing/linker/trimmingTests.targets b/eng/testing/linker/trimmingTests.targets index 649ad3e25bf2d9..73cb923ec60ae1 100644 --- a/eng/testing/linker/trimmingTests.targets +++ b/eng/testing/linker/trimmingTests.targets @@ -68,6 +68,15 @@ <_additionalProjectSourceFiles Include="%(TestConsoleApps.AdditionalSourceFiles)" /> + + <_switchesAsItems Include="%(TestConsoleApps.DisabledFeatureSwitches)" Value="false" /> + <_switchesAsItems Include="%(TestConsoleApps.EnabledFeatureSwitches)" Value="true" /> + + + + <_runtimeHostConfigurationOptionsString>@(_switchesAsItems->'<RuntimeHostConfigurationOption Include="%(Identity)" Value="%(Value)" Trim="true" />', '%0a ') + + + System.Runtime.InteropServices.BuiltInComInterop.IsSupported + diff --git a/src/libraries/System.Runtime/tests/TrimmingTests/TypeBuilderComDisabled.cs b/src/libraries/System.Runtime/tests/TrimmingTests/TypeBuilderComDisabled.cs new file mode 100644 index 00000000000000..bb59db5e1ed0e3 --- /dev/null +++ b/src/libraries/System.Runtime/tests/TrimmingTests/TypeBuilderComDisabled.cs @@ -0,0 +1,31 @@ +// 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.Reflection; +using System.Reflection.Emit; + +AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("GeneratedAssembly"), AssemblyBuilderAccess.Run); +ModuleBuilder module = assembly.DefineDynamicModule("GeneratedModule"); + +string typeName = "GeneratedType"; +TypeBuilder genericType = module.DefineType(typeName); +genericType.DefineField("_int", typeof(int), FieldAttributes.Private); +genericType.DefineProperty("Prop", PropertyAttributes.None, typeof(string), null); + +Type generatedType = genericType.CreateType(); +if (generatedType.Name != typeName) +{ + Console.WriteLine($"Unexpected name for generated type. Expected: {typeName}, Actual: {generatedType.Name}"); + return -1; +} + +object obj = Activator.CreateInstance(generatedType); +string objAsString = obj.ToString(); +if (objAsString != typeName) +{ + Console.WriteLine($"Unexpected result of ToString() for instance of generated type. Expected: {typeName}, Actual: {objAsString}"); + return -2; +} + +return 100;