Запустить приложение С#, используя более старую версию .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 — это обновление на месте, поэтому оно буквально перезаписывает ваши DLL версии 4.5. Не уверен насчет других, но кажется вероятным. См. также этот ответ   -  person John Wu    schedule 07.04.2020
comment
Как только дизайнеры вышли из ада dll: 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
Это действительно хороший вопрос. Однако после небольшого исследования это не кажется многообещающим. Я думаю, вам лучше всего будет запустить виртуальную машину для таких тестов.   -  person 41686d6564    schedule 07.04.2020
comment
Вы видели это? связывание сборки   -  person Fateme Mirjalili    schedule 07.04.2020