Почему не удается добавить ссылку на проект, ориентированный на .NET Framework 4.0? - PullRequest
8 голосов
/ 01 апреля 2010

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

Ответы [ 3 ]

7 голосов
/ 01 апреля 2010

Да, это проблема. Так же, как вы не можете добавить ссылку на сборку .NET 2.0 из проекта .NET 1.0 или 1.1. .NET 4.0 - это новая версия среды выполнения платформы (CLR). В обеих версиях .NET 3.5 и 3.0 используется версия среды * CL * 2.0 runtime *. 1005 * Вы всегда можете добавить ссылку из сборки, построенной с более новой средой выполнения, в сборку с более старой средой выполнения, но не наоборот.

Из .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)

2 голосов
/ 01 апреля 2010

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

0 голосов
/ 15 апреля 2012

Если вы хотите использовать сборку, предназначенную для .net framework 4, из сборки, предназначенной для .net framework 3.5, вы можете экспортировать сборку (.net framework 4) через COM и импортировать ее в сборку .net framework 3.5.

Извините за мой плохой английский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...