Почему делает добавление ссылки на проект, предназначающийся для Платформы.NET 4,0 сбоя?

У нас есть два проекта, которые являются оба библиотеками классов. Проект 1 является проектом VS 2008 года и предназначается для Платформы.NET 3.5. Проектом 2 является VS 2010 (предвыпускная версия) проект, который предназначается для Платформы.NET 4.0. Когда я пытаюсь добавить ссылку на Проект 2 в Проекте 1, он перестал работать с меньше, чем информативное сообщение об ошибке. Я знаю, что, если я изменяюсь, целевая Платформа для Проекта 2 к 3,5, затем добавляя ссылку будет работать. Мой вопрос, если я не изменю целевые платформы, но преобразую Проект 1 в VS 2010, то ссылка будет работать? Иными словами, есть ли некоторая свойственная несовместимость между библиотеками классов, предназначающимися для различных версий платформы, или она перестала работать для меня, потому что VS 2008 не знает о 4,0 платформах?

8
задан Malcolm Post 1 April 2010 в 03:34
поделиться

2 ответа

Да, это проблема. Подобно тому, как вы не можете добавить ссылку на сборку .NET 2.0 из проекта .NET 1.0 или 1.1. .NET 4.0 - это новая исполняющая версия платформы (CLR). В выпусках .NET 3.5 и 3.0 используется версия среды выполнения 2.0 платформы (CLR).

Вы всегда можете добавить ссылку из сборки, созданной с использованием более новой среды выполнения, в сборку с более старой средой выполнения, но не наоборот.

Из .NET 2.0 (3.0 и 3.5):
* Может ссылаться на сборки .NET 2.0 (3.0 и 3.5)
* НЕ может ссылаться на сборки .NET 4.0

Начиная с .NET 4.0:
* Может ссылаться на сборки .NET 4.0
* Может ссылаться на сборки .NET 2.0 (3.0 и 3.5)

7
ответ дан 5 December 2019 в 18:58
поделиться

Фреймворк версий 2, 3.0, 3.5 работает в среде CLR версии 2, а фреймворк версии 4 работает в среде CLR версии 4: среда CLR версии 2 не загружает сборку, в которой указано, что для нее требуется среда CLR 4, поэтому Visual Studio пытается (похоже, ужасно) вам это сказать. Итак, чтобы ответить на ваш вопрос, да, если вы обновите свой проект 1 до VS 2010 и измените целевую платформу на версию 4 (он делает это по умолчанию для проектов C ++, но не C # / VB.NET), он сможет для ссылки на проект 2.

2
ответ дан 5 December 2019 в 18:58
поделиться