-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Description
Description
After updating to .NET 9 a trimmed application fails in debug configuration with a System.TypeLoadException: Method 'GetKeyedService' in type 'Microsoft.Extensions.DependencyInjection.ServiceProvider' from assembly 'Microsoft.Extensions.DependencyInjection, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.
Based on inspecting the trimmed dll, the ServiceProvider has the IKeyedServiceProvider interface listed but none of the methods are present.
Reproduction Steps
Create a new console app and replace Main with:
internal class Program
{
static void Main(string[] args)
{
var serviceCollection = new ServiceCollection();
serviceCollection.AddMemoryCache();
IServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();
Console.WriteLine(serviceProvider.GetRequiredService<IMemoryCache>());
}
}
Publish the exe and run it to make sure the trimmed exe is ran.
Expected behavior
No TypeLoadException should be thrown. A trimmed application should work just like untrimmed since there are no trim warnings.
Actual behavior
Application fails in debug configuration with a System.TypeLoadException: Method 'GetKeyedService' in type 'Microsoft.Extensions.DependencyInjection.ServiceProvider' from assembly 'Microsoft.Extensions.DependencyInjection, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.
Regression?
Yes, from .NET 8
Known Workarounds
No response
Configuration
.NET 9 on Windows 11, x64, running as AnyCPU.
Other information
Project file:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.0" />
</ItemGroup>
</Project>
Metadata
Metadata
Assignees
Labels
Type
Projects
Status