Kode apa yang sebenarnya berjalan di .NET Core Web Application kasus ini?

Konteks

VS 2019, .NET Core 3 Pratinjau 5. Saya telah membuat Aplikasi Web ASP MVC yang baru. Sekarang periksa kode StartUp:

// ...
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
//...

Ketika saya mencoba melihat apa yang dilakukan metode ekstensi tersebut, saya pergi ke sumbernya (dalam kasus saya ctrl+klik dan itu memanggil dekompiler JetBrain) saya mendapatkan ini:

// Decompiled with JetBrains decompiler
// Type: Microsoft.AspNetCore.Builder.AuthAppBuilderExtensions
// Assembly: Microsoft.AspNetCore.Authentication, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// MVID: A1CE531C-37CE-4C8A-B143-24C2AC9CFE19
// Assembly location: C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0-preview5-19227-01\ref\netcoreapp3.0\Microsoft.AspNetCore.Authentication.dll

namespace Microsoft.AspNetCore.Builder
{
  /// <summary>
  /// Extension methods to add authentication capabilities to an HTTP application pipeline.
  /// </summary>
  public static class AuthAppBuilderExtensions
  {
    /// <summary>
    /// Adds the <see cref="T:Microsoft.AspNetCore.Authentication.AuthenticationMiddleware" /> to the specified <see cref="T:Microsoft.AspNetCore.Builder.IApplicationBuilder" />, which enables authentication capabilities.
    /// </summary>
    /// <param name="app">The <see cref="T:Microsoft.AspNetCore.Builder.IApplicationBuilder" /> to add the middleware to.</param>
    /// <returns>A reference to this instance after the operation has completed.</returns>
    public static IApplicationBuilder UseAuthentication(
      this IApplicationBuilder app)
    {
      throw null;
    }
  }
}

Pertanyaan

Saat saya men-debug kode, saya tidak mendapatkan Exception jadi sepertinya kode tersebut tidak berjalan. Kesimpulan saya, bahwa apa yang dirujuk oleh proyek itu adalah rakitan kosong tiruan, (lihat baris komentar // Assembly location: C:\Program Files... di sumber yang telah didekompilasi) tetapi saya tidak mengerti mekanisme mengapa runtime rakitan lain akan dimuat?

Adakah yang bisa menjelaskan apa yang sebenarnya terjadi di sini?


person g.pickardou    schedule 08.05.2019    source sumber
comment
Apakah Anda men-debug kode yang telah didekompilasi seperti yang dijelaskan di sini: stackoverflow.com/a/32788309/3212610 ?   -  person AirLancer    schedule 08.05.2019
comment
@JohanP Dekompilernya benar, saya benar-benar pergi ke Majelis itu (lihat komentar lokasi Majelis di sumber yang didekompilasi) dan Reflektor juga mendekompilasi semua metode untuk membuang null. Pertanyaannya adalah apakah rakitan dummy itu, dan mekanisme apa yang memastikan bahwa runtime bukan dummies itu, melainkan implementasi nyata yang akan dimuat (dan dari mana?)   -  person g.pickardou    schedule 08.05.2019
comment
Itu adalah majelis referensi. Dimaksudkan untuk dikompilasi, bukan untuk dijalankan. Implementasinya ada di Microsoft.AspNetCore.Authentication.dll di direktori bin Anda.   -  person CodeCaster    schedule 08.05.2019
comment
Lihat juga folder stackoverflow.com/questions/9701135/, github.com/dotnet /docs/issues/2638   -  person CodeCaster    schedule 08.05.2019
comment
@CodeCaster: Terima kasih, Anda benar. Masih belum jelas a) apa gunanya rakitan referensi tiruan ini, mengapa kami tidak mengkompilasinya dengan yang asli? b) Mengapa Resharper mendekompilasi boneka-boneka ini, padahal sudah jelas bagi perkakas pembuat apa yang akan dihasilkan oleh alat lain, jadi Resharper juga harus melakukan hal yang sama...   -  person g.pickardou    schedule 08.05.2019
comment
@g.pickardou jika Anda menunggu R# menjadi pintar dan konsekuen dalam melakukannya, saya hanya dapat memberi tahu Anda bahwa saya menunggu sejak bertahun-tahun.   -  person springy76    schedule 29.05.2019
comment
@ springy76: Saya menyadarinya, jadi saya terbuka untuk solusi alternatif apa pun, yang mengarahkan saya ke sumber dalam kasus yang dijelaskan   -  person g.pickardou    schedule 29.05.2019
comment
@CodeCaster apakah mungkin untuk memberitahu decompiler untuk tidak membuka ref dll, tetapi src dll?   -  person Legends    schedule 01.10.2019