Saya menggunakan netstandard2.1
perpustakaan di netcoreapp3.0
aplikasi web saya . Saat menambahkan layanan saya Startup
, saya mendapatkan kesalahan di bawah ini:
'Tidak dapat memuat jenis' Microsoft.AspNetCore.Mvc.MvcJsonOptions 'dari assembly' Microsoft.AspNetCore.Mvc.Formatters.Json, Versi = 3.0.0.0
Saya juga menggunakan beberapa fitur dari Microsoft.AspNetCore.Mvc
paket 2.2.0 di perpustakaan kelas saya.
Ini perpustakaan saya .csproj
,
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
</ItemGroup>
</Project>
Ini ServiceExtensions
kelas saya dari perpustakaan saya,
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;
}
}
Ini ConfigureLibraryOptions
kelas saya ,
public class ConfigureLibraryOptions : IConfigureOptions<MvcOptions>
{
public void Configure(MvcOptions options)
{
options.ModelBinderProviders.Insert(0, new CustomBinderProvider());
}
}
Ini ConfigureServices
dari Startup
,
services.AddControllersWithViews().AddMyLibrary();
Tolong bantu mengapa saya mendapatkan kesalahan ini dan membantu cara mengatasi ini?
netstandard2.1
perpustakaan kelas dengan referensi keMicrosoft.AspNetCore.Mvc
2.2.0 dinetcoreapp3.0
? Alih-alih, saya harus mengubahnetstandard2.1
tonetcoreapp3.0
dan menambahkanFrameworkReference
keMicrosoft.AspNetCore.App
?Saya tidak yakin apakah ini memecahkan masalah OP, tetapi kesalahan ini juga terjadi ketika Anda menggunakan Swashbuckle 4 di .Net Core 3. Solusinya adalah menggunakan Swashbuckle 5. yaitu
Maka Anda harus memutakhirkannya di Startup.cs. Umumnya yang melibatkan kelas awalan yang tidak dikompilasi dengan
OpenApi
misoptions.SwaggerDoc("v1" new Info ...
menjadi
options.SwaggerDoc("v1", OpenApiInfo
Juga
OpenApiSecurityScheme
menjadiApiKeyScheme
Lihat juga dokumen di https://github.com/domaindrivendev/Swashbuckle.AspNetCore
sumber
Version
untuk objekOpenApiInfo
menyatakan bahwa ia DIBUTUHKAN untuk didefinisikan. Jika saya melewatkan mendefinisikannya, semuanya berfungsi, selain tidak memiliki 2 label khusus yang dicetak di sebelah nama aplikasi saya di UI yang dihasilkan oleh kesombongan (Satu berisi versi yang telah kami hapus, yang lainOAS3
. Apa artinya?). Mengapa itu diperlukan, dan apa yang kami tandaskan dengan itu? Di dokumen yang Anda tautkan, itu didefinisikan sebagaiv1
. Jika tetap seperti itu, atau itu hanya contoh - kita lebih suka menyimpan versi aplikasi kita di sana. Itu bisa apa saja, seperti0.0.1a-ffg
netstandard2.1 ke netcoreapp3.0 MvcJsonOptions -> MvcNewtonsoftJsonOptions
sumber