Назад совместимость платформы.NET 4

У нас есть Приложение WPF, основываются на платформе .NET 3.5.

Некоторые тестеры находят, удаляют ли они платформу .NET 3.5, но устанавливают платформу .NET 4.0, нашему APP не удается запустить себя.

Дозируйте это означает, что платформа .NET 4.0 не включает все 3.5, освобождает, и пользователи должны установить .net 3.5 даже при том, что они имеют 4.0?

Я вижу, вот некоторые проблемы миграции, перечисленные Microsoft http://msdn.microsoft.com/en-us/library/ee941656.aspx#windows_presentation_foundation_wpf

Они все повреждают изменения так, чтобы обратная совместимость была разрушена?

Спасибо

18
задан LeopardSkinPillBoxHat 14 February 2012 в 22:58
поделиться

3 ответа

.Net 3.5 / 2.0 Приложения не автоматически запускаются в среде выполнения .Net 4.0. Вы должны явно указать для своего приложения, что оно должно работать на .Net 4.0 в вашем App.config, добавив:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" /> 
  </startup>
</configuration>

Если у вас есть сторонние компоненты, вы также должны отметить их как готовые к 4.0:

<configuration>
   ...
   <runtime>
      ...
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         ...
         <dependentAssembly>
            <assemblyIdentity name="AssemblyName" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="3.5.0.0-3.5.0.0" newVersion="4.0.0.0"/>
         </dependentAssembly>
         ...
      </assemblyBinding>
      ...
   </runtime>
   ...
</configuration>
20
ответ дан 30 November 2019 в 07:44
поделиться

Спасибо всем, спасибо Foxfire, ваш метод работает.

И есть одна хитрость, которой я хотел бы поделиться, - это порядок узлов.

Когда я установил это так, как показано ниже, он работает как для 3.5, так и для 4.0.

<startup>
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v2.0.50727"/>
</startup>

И если я изменю порядок, приложение выйдет из строя, если в ОС установлена ​​только версия 4.0.

<startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0" />
</startup>
5
ответ дан 30 November 2019 в 07:44
поделиться

разные версии работают бок о бок, так что да, им нужно установить 3.5, даже если они уже установили 4.0. Но они не будут мешать друг другу, поэтому ваша программа будет продолжать использовать 3.5, если вы не перекомпилируете ее для целевой версии 4.0 (или не настроите ее для использования 4.0 - см. Правку ниже).

Как было указано в , этот вопрос Microsoft имеет некоторые рекомендации по этому поводу:

.NET Framework 4 хорошо совместим с приложениями, созданными с помощью более ранних версий .NET Framework. версий, за исключением некоторых изменений, которые были внесены для повышения безопасности, соответствия стандартам, корректности, надежности и производительности.

.NET Framework 4 не использует автоматически свою версию общеязыковой среды выполнения для запуска приложений, созданных с помощью более ранних версий .NET Framework. Чтобы запускать старые приложения с .NET Framework 4, вы должны скомпилировать свое приложение с целевым файлом.NET Framework, указанную в свойствах вашего проекта в Visual Studio, или вы можете указать поддерживаемую среду выполнения с помощью элемента в файле конфигурации приложения.

Вы можете установить .NET 3.5 и .NET 4.0 параллельно друг другу. Visual Studio 2010 также включает улучшенную поддержку таргетинга для .NET 3.5. Блог ScottGu рассказывает об этом более подробно.

РЕДАКТИРОВАТЬ: Как уже указывалось, вы можете изменить конфигурацию своего приложения, чтобы оно использовало среду выполнения 4.0, если хотите. это может быть нормально, а может и нет, в зависимости от того, какую часть фреймворка вы используете. Безопаснее всего установить 3.5, но это не является строго необходимым, хотя вам нужно внести изменения в свою конфигурацию, чтобы заставить ее работать.

8
ответ дан 30 November 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: