เรียกใช้แอปพลิเคชัน c # โดยใช้ .net เวอร์ชันเก่ากว่าหรือไม่

ฉันจะบังคับให้แอปพลิเคชัน C# ของฉันทำงานโดยใช้รันไทม์ .net 4.5 ได้อย่างไร แม้ว่าฉันจะติดตั้ง 4.5, 4.6, 4.7, 4.8 และอื่น ๆ แล้วหรือยัง?

เหตุผลที่ฉันพยายามทำเช่นนี้ก็เพราะฉันต้องการสร้างจุดบกพร่องที่มีอยู่ใน WPF เวอร์ชันก่อนหน้า ดังนั้นฉันจึงต้องการเรียกใช้โค้ดกับ .Net เวอร์ชันก่อนหน้าโดยไม่ต้องถอนการติดตั้งอะไรเลย

ฉันลองทำสิ่งต่อไปนี้:

  • กรอบเป้าหมาย .Net 4.5 ในการตั้งค่าการสร้างแอปพลิเคชัน

จากนั้นเพิ่มการกำหนดค่าต่อไปนี้:

<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;
}

แต่มันก็กลับเป็นความจริง ดังนั้นจึงไม่ได้ใช้รันไทม์. Net 4.5 ใช่ไหม

ฉันเดาว่ามันจะใช้รันไทม์ล่าสุดที่คุณติดตั้งไว้เสมอ?


person wforl    schedule 07.04.2020    source แหล่งที่มา
comment
ไม่แน่ใจว่าเป็นไปได้ .NET 4.6 เป็นการอัปเกรดแบบแทนที่ ดังนั้นจึงเขียนทับ 4.5 DLL ของคุณอย่างแท้จริง ส่วนอันอื่นๆไม่แน่ใจ แต่น่าจะเป็นไปได้ ดูคำตอบนี้ด้วย   -  person John Wu    schedule 07.04.2020
comment
ขณะที่นักออกแบบเพิ่งออกมาจาก dll Hell: en.wikipedia.org/wiki/DLL_Hell พวกเขาต้องการให้คุณไม่ต้องกังวลกับเวอร์ชันที่แน่นอน ทำไมคุณถึงคิดว่าคุณต้องตรวจสอบเวอร์ชันนั้นจริงๆ? ดูเหมือนว่าคุณจะประสบปัญหาร้ายแรงเกี่ยวกับ XY   -  person Christopher    schedule 07.04.2020
comment
@Christopher ฉันต้องการสร้างข้อผิดพลาดที่มีอยู่ใน WPF เวอร์ชันก่อนหน้าดังนั้นจึงต้องการเรียกใช้โค้ดกับ .Net เวอร์ชันก่อนหน้าโดยไม่ต้องถอนการติดตั้งอะไรเลย   -  person wforl    schedule 07.04.2020
comment
@wforl นั่นเป็นกรณีที่ถูกต้องแน่นอน น่าเสียดายที่ฉันกำลังวาดช่องว่างเกี่ยวกับวิธีการดึงมันออก   -  person Christopher    schedule 07.04.2020
comment
เป็นคำถามที่ดีจริงๆ หลังจากค้นคว้ามาบ้างแล้ว สิ่งนี้ดูเหมือนจะไม่มีแนวโน้มดี ฉันเดาว่าทางออกที่ดีที่สุดของคุณคือการเรียกใช้ VM สำหรับการทดสอบประเภทนี้   -  person 41686d6564    schedule 07.04.2020
comment
คุณเห็นนี้หรือไม่? assemblyBinding   -  person Fateme Mirjalili    schedule 07.04.2020