Estoy usando la netstandard2.1biblioteca en mi netcoreapp3.0aplicación web. Al agregar mi servicio Startup, recibo el siguiente error:
'No se pudo cargar el tipo' Microsoft.AspNetCore.Mvc.MvcJsonOptions 'del ensamblado' Microsoft.AspNetCore.Mvc.Formatters.Json, Version = 3.0.0.0
También estoy usando algunas funciones de Microsoft.AspNetCore.Mvc paquete 2.2.0 en mi biblioteca de clases.
Aquí está mi biblioteca .csproj,
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
</ItemGroup>
</Project>
Aquí está mi ServiceExtensionsclase de mi biblioteca,
public static class ServiceExtensions
{
public static IMvcBuilder AddMyLibrary(this IMvcBuilder builder)
{
builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
builder.Services.ConfigureOptions<ConfigureLibraryOptions>();
return builder;
}
}
Aquí está mi ConfigureLibraryOptionsclase
public class ConfigureLibraryOptions : IConfigureOptions<MvcOptions>
{
public void Configure(MvcOptions options)
{
options.ModelBinderProviders.Insert(0, new CustomBinderProvider());
}
}
Aquí es el ConfigureServicesde Startup,
services.AddControllersWithViews().AddMyLibrary();
Por favor, ayuda sobre por qué recibo este error y cómo solucionarlo.

netstandard2.1la biblioteca de clases con referencia aMicrosoft.AspNetCore.Mvc2.2.0 innetcoreapp3.0? En cambio, ¿debería cambiar elnetstandard2.1tonetcoreapp3.0y agregar unFrameworkReferencetoMicrosoft.AspNetCore.App?No estoy seguro de si esto resuelve el problema de OP, pero este error también ocurre cuando usa Swashbuckle 4 en .Net Core 3. La solución es usar Swashbuckle 5. es decir
Luego deberá actualizarlo en Startup.cs. En general, eso implica prefijar clases que no se compilan con,
OpenApipor ejemplo,options.SwaggerDoc("v1" new Info ...se convierte
options.SwaggerDoc("v1", OpenApiInfoTambién se
OpenApiSecuritySchemeconvierteApiKeySchemeConsulte también los documentos en https://github.com/domaindrivendev/Swashbuckle.AspNetCore
fuente
Versiondel objetoOpenApiInfoindica que se REQUIERE que se defina. Si omito definirlo, todo funciona, aparte de no tener 2 etiquetas especiales impresas junto al nombre de mi aplicación en la interfaz de usuario generada por el swagger (una contiene la versión que hemos omitido, la otraOAS3. ¿Qué significa?). ¿Por qué es obligatorio y qué significamos con él? En los documentos que vinculó, se define comov1. Si se mantiene así, o es solo un ejemplo, deberíamos almacenar la versión de nuestra aplicación allí. Puede ser cualquier cosa, como0.0.1a-ffgnetstandard2.1 a netcoreapp3.0 MvcJsonOptions -> MvcNewtonsoftJsonOptions
fuente