CarterCommunity / Carter

Carter is framework that is a thin layer of extension methods and functionality over ASP.NET Core allowing code to be more explicit and most importantly more enjoyable.
MIT License
2.05k stars 172 forks source link

"Object reference not set to an instance of an object." produced when using 'Self-contained' AND 'Produce single file' publishing options in net6.0 #291

Open developarratoutlookdotcom opened 2 years ago

developarratoutlookdotcom commented 2 years ago

Error

I receive the error when trying to run an app 'published' with the following settings:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Carter.DependencyContextAssemblyCatalog.GetAssemblies()
   at Carter.CarterExtensions.WireupCarter(IServiceCollection services, DependencyContextAssemblyCatalog assemblyCatalog, CarterConfigurator carterConfigurator)
   at Carter.CarterExtensions.AddCarter(IServiceCollection services, DependencyContextAssemblyCatalog assemblyCatalog, Action`1 configurator)
   at Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.AddMintWebApp(WebApplicationBuilder builder)
   at Program.<Main>$(String[] args) in Program.cs:line 12

Current workaround

Simply remove the 'single file' option.

Additional information

Basically it works OK as long as you don't try to publish with the 'single file' option. Tested all other combinations and it works OK. Reason for using 'single file' is more for simplicity, massive reduction in files (rather than overall size - although that is a consideration). So work around is personally acceptable but def. be nice to have.

datnguyen293 commented 2 years ago

I'm facing the same problem. Currently, uncheck the single file works but it makes the deployment process complicated.

ritasker commented 2 years ago

As of .Net 6, getting the DependencyContext of an application deployed as a single-file is not supported. Carter is using the DependencyContext in the DependencyContextAssemblyCatalog.

The issue can be tracked here https://github.com/dotnet/runtime/issues/70438