Нумерация версий .NET Framework должна быть беспорядочной после 2.0.Сборка не предназначена для версии платформы .NET, она предназначена для версии CLR.И версия CLR для фреймворка версий 2.0, 3.0 и 3.5 была такой же, 2.0.50727.
Именно поэтому она выглядела , как будто вы могли смешивать версии в VS2008.Но вы видели [AssemblyVersion] сборки, которая не имеет ничего общего с версией CLR.К сожалению, версия CLR не отображается в окне «Свойства», вам нужно запустить Ildasm.exe, чтобы увидеть ее в метаданных.Но вы можете с уверенностью предположить, что любая версия сборки между 2.0.0.0 и 3.5.0.0 предназначена для CLR версии 2.0.50727
. Она закончилась .NET 4.0 и получила новую версию CLR 4.0.30319.Что говорит MSDN, что когда вы нацеливаетесь на CLR версии 2.0, вы не можете использовать сборки, предназначенные для 4.0.CLR версии 2.0 не знает, как читать метаданные сборки .NET 4.0, формат был изменен.Единственный обходной путь - принудительно EXE загружать версию CLR 4.0, даже если он запрашивает 2.0.50727.Вы делаете это с файлом app.exe.config, он должен выглядеть следующим образом:
<configuration>
<startup>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
И немного протестировав, что он все еще работает правильно, Microsoft использовала v4.0, чтобы исправить несколько старых ошибок в 2.0это не может быть легко исправлено, не рискуя сломать старый код, который полагается на ошибочное поведение.