Jalankan aplikasi c# menggunakan .net versi lama?

Bagaimana saya bisa memaksa aplikasi C# saya untuk berjalan menggunakan runtime .net 4.5? Meskipun saya juga menginstal 4.5, 4.6, 4.7, 4.8, dll?

Alasan saya mencoba melakukan ini adalah karena saya ingin mereproduksi bug yang ada di versi WPF sebelumnya, jadi saya ingin menjalankan kode pada versi .Net yang lebih lama tanpa harus menghapus instalan apa pun.

Saya mencoba yang berikut ini:

  • Kerangka target .Net 4.5 dalam pengaturan pembuatan Aplikasi

dan kemudian menambahkan konfigurasi berikut:

<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>

To test if it was running the 4.5 runtime, I tried to access something added after 4.5 :

private static bool Is462Installed()
{
    // API changes in 4.6.2: https://github.com/Microsoft/dotnet/blob/master/releases/net462/dotnet462-api-changes.md
    return Type.GetType("System.Security.Cryptography.AesCng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", false) != null;
}

Tapi itu kembali menjadi kenyataan. Jadi tidak menggunakan runtime .Net 4.5?

Jadi menurut saya itu akan selalu menggunakan runtime terbaru yang telah Anda instal?


person wforl    schedule 07.04.2020    source sumber
comment
Tidak yakin itu mungkin. .NET 4.6 adalah pemutakhiran di tempat sehingga benar-benar menimpa 4.5 DLL Anda. Tidak yakin dengan yang lain tapi sepertinya mungkin. Lihat juga jawaban ini   -  person John Wu    schedule 07.04.2020
comment
Saat para desainer baru saja keluar dari Neraka dll: en.wikipedia.org/wiki/DLL_Hell mereka benar-benar ingin Anda tidak perlu khawatir tentang versi tepatnya. Menurut Anda mengapa Anda perlu memeriksa versi itu? Sepertinya Anda mengalami kasus masalah XY yang serius.   -  person Christopher    schedule 07.04.2020
comment
@Christopher Saya ingin mereproduksi bug yang ada di versi WPF sebelumnya, jadi ingin menjalankan kode pada versi .Net sebelumnya tanpa harus menghapus instalan apa pun.   -  person wforl    schedule 07.04.2020
comment
@wforl Itu memang kasus yang valid. Sayangnya saya tidak tahu cara melakukannya.   -  person Christopher    schedule 07.04.2020
comment
Itu memang pertanyaan yang bagus. Setelah sedikit penelitian, hal ini tampaknya tidak menjanjikan. Saya kira pilihan terbaik Anda adalah menjalankan VM untuk pengujian semacam ini.   -  person 41686d6564    schedule 07.04.2020
comment
Apakah kamu melihat yang ini? Pengikatan Perakitan   -  person Fateme Mirjalili    schedule 07.04.2020