Когда вы создаете проект, нацеленный на конкретную версию платформы, вы сообщаете компилятору, какую версию библиотек инфраструктуры и среды выполнения установил компьютер, на котором будет запускаться проект.Например, System.dll в 3.5 и System.dll в 4.0 - это не одно и то же, так как System.dll в 2.0 и 3.5 не совпадают.
Теоретически, вы не можете гарантировать прямую совместимость (3.5 ссылается на 4.0), поскольку сборка 4.0 может использовать API, которых нет в 3.5.Аналогично, вы не можете гарантировать обратную совместимость 2.0 в 4.0, потому что некоторые API могли быть устаревшими и удалены.
На практике 4.0 обладает достаточной обратной совместимостью с 3.5, что позволяет вам ссылаться на сборки 3.5 в приложениях 4.0 с некоторыми оговорками (иногда вам нужно добавить директиву в файл конфигурации,с момента сборки загрузка в 4.0 изменилась с 3.5).К сожалению, 3.5 не имеет прямой совместимости с 4.0 из-за огромного количества новых API, представленных 4.0, поэтому я не думаю, что вы можете ссылаться на сборки 4.0 из 3.5.
Вы видите, чтоисключение информации схемы по этой причине.«supportRuntime» - это элемент конфигурации, который был представлен в .NET 4.0.Но так как вы ссылаетесь на сборку в 3.5, версия .NET 3.5 System.Configuration, которая анализирует файл конфигурации, не распознает этот элемент и, следовательно, выдает исключение.
Единственный способ, вероятно,(1) изменить исходный код и пересобрать, исправив все вызовы API для библиотек 4.0, которые не работают в 3.5, или (2) сделать то же самое, но на уровне IL, генерируя новую сборку (вы можетесделать это с al.exe).