Estou usando a netstandard2.1
biblioteca no meu netcoreapp3.0
aplicativo da web. Ao adicionar meu serviço Startup
, estou recebendo o erro abaixo:
'Não foi possível carregar o tipo' Microsoft.AspNetCore.Mvc.MvcJsonOptions 'do assembly' Microsoft.AspNetCore.Mvc.Formatters.Json, Versão = 3.0.0.0
Também estou usando alguns recursos do Microsoft.AspNetCore.Mvc
pacote 2.2.0 na minha biblioteca de classes.
Aqui está minha 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>
Aqui está minha ServiceExtensions
turma da minha 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;
}
}
Aqui está a minha ConfigureLibraryOptions
turma,
public class ConfigureLibraryOptions : IConfigureOptions<MvcOptions>
{
public void Configure(MvcOptions options)
{
options.ModelBinderProviders.Insert(0, new CustomBinderProvider());
}
}
Aqui está o ConfigureServices
de Startup
,
services.AddControllersWithViews().AddMyLibrary();
Por favor, ajude por que estou recebendo esse erro e ajude como resolver isso?
netstandard2.1
biblioteca de classes com referência àMicrosoft.AspNetCore.Mvc
2.2.0 nonetcoreapp3.0
? Em vez disso, devo alterar onetstandard2.1
paranetcoreapp3.0
e adicionar umFrameworkReference
aMicrosoft.AspNetCore.App
?Não tenho certeza se isso resolve o problema do OP, mas esse erro também ocorre quando você usa o Swashbuckle 4 no .Net Core 3. A solução é usar o Swashbuckle 5.
Então você precisará atualizá-lo em Startup.cs. Geralmente, isso envolve prefixar classes que não são compiladas com,
OpenApi
por exemplo,options.SwaggerDoc("v1" new Info ...
torna-se
options.SwaggerDoc("v1", OpenApiInfo
Também
OpenApiSecurityScheme
se tornaApiKeyScheme
Consulte também os documentos em https://github.com/domaindrivendev/Swashbuckle.AspNetCore
fonte
Version
para o objetoOpenApiInfo
afirma que é NECESSÁRIO definir. Se eu pular a definição, tudo funcionará, além de não ter duas etiquetas especiais impressas ao lado do nome do meu aplicativo na interface do usuário gerada pelo swagger (uma contém a versão que omitimos e a outraOAS3
. O que isso significa?). Por que é necessário e o que queremos dizer com isso? Nos documentos que você vinculou, é definido comov1
. Deveria permanecer assim, ou esse é um mero exemplo - devemos armazenar a versão do nosso aplicativo lá. Pode ser qualquer coisa, como, por exemplo,0.0.1a-ffg
netstandard2.1 para netcoreapp3.0 MvcJsonOptions -> MvcNewtonsoftJsonOptions
fonte