2013-08-27 3 views
2

У меня есть проект в .NET 2.0 (назовем его Project A). Я хотел использовать WCF, поэтому я создал еще один проект (в .NET 3.0, назовем его Project B), где я поместил всю логику WCF, поэтому все, что я делаю в своем проекте A, вызывает некоторый метод из класса из Project B. Когда я добавить ссылку на проект в, Проект а не видит, и я получаю предупреждения:Как использовать класс .net 3.0 в проекте .net 2.0?

в основной «Проект B/Some.dll» не может быть решена, поскольку она имеет опосредованное зависимость от сборного каркаса «системы .ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = XXX ", который не может быть разрешен в целевой среде. ».NETFramework, Version = v2.0" .

Как это сделать?

ответ

0

Да, это вполне возможно. Вы просто показываете компоненты, написанные в 3.0, как объекты COM. 2.0 хостинг-приложение просто использует их как COM-объекты и не знает, являются ли они родными, 2.0, 3.0 или что-то еще. COM - это общий интерфейс, который обе версии исполнения должны реализовывать одинаково.

0

Для использования WCF (во время выполнения) .NET 3 (или лучше 3.5) необходимо будет установить в любом случае. Поэтому измените ProjectA на 3 (или 3.5).

+1

Он установлен. Я не могу обновить Project A до .NET 3.0 (если бы я мог не быть этого вопроса;)) –

+0

@PeteMorrison см. [История изменений] (http://stackoverflow.com/posts/22246916/revisions) по вопросу вы отправили предлагаемое редактирование. –

0

Вы не можете сделать это напрямую, ваши проекты нацелены на разные версии .NET.

Что вы можете сделать, это установить связь между двумя процессами.

Сделайте свой проект 3.0 исполняемым и разрешите ему принимать аргумент командной строки, который вызывает метод, который вы хотите использовать.

В своем проекте 2.0 создайте свой проект 3.0 как новый Process с соответствующими аргументами командной строки. Если необходимо, напишите на ваш проект StandardOutput 3.0 и прочитайте его из вашего проекта 2.0.