'What Nuget packages must be referenced by an ASP.NET Core 6 application parts project
I am creating an ASP.NET Core 6 application in which I want to integrate additional areas provided by separate assemblies. I follow the documentation at https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-6.0. In a project that provides app parts, I add an extension method for IMvcBuilder which allows me to register the parts assembly conveniently, for instance:
services.AddMvc().AddFeatureXyzParts();
The extension does nothing more like this:
public static IMvcBuilder AddFeatureXyzParts(this IMvcBuilder builder)
{
if (builder == null) throw new ArgumentNullException(nameof(builder));
builder.AddApplicationPart(typeof(MvcBuilderExtensions).Assembly);
return builder;
}
In the project file, I changed the Sdk attribute from Microsoft.NET.Sdk to Microsoft.NET.Sdk.Web to reference the ASP.NET Core 6 SDK implicitly (as it is set up for the main application project), but this breaks the build with the error stating that the assembly lacks the definition of a Main method.
Since it is not a standalone web application assembly, but a parts library shipping additional controller types and services, I´d like to set the Sdk property back to Microsoft.NET.Sdk. Then I have to add missing package references manually. For this, the Microsoft.AspNetCore.App package seems to be the wrong choice for ASP.NET Core 6, and Microsoft.AspNetCore.App.Refs must not be used.
What references do I need instead?
Update - Define the required entry point to satisfy the build
As a workaround that allows me to reference the required ASP.NET Core 6 SDK, I can use the Microsoft.NET.Sdk.Web SDK if I add an internal Program class that defines a Main method. With this in place, I can register my part assembly as wanted, and controllers (even if part of an area) integrate nicely.
internal static class Program
{
public static void Main() => throw new NotImplementedException();
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
