2015-10-14 5 views
0

У меня есть приложение, которое написано и предназначено для .NET Framework 4.0. В одном из базового проекта я должен добавить ссылку, которая выполняется в .NET 4.5. Итак, чтобы построить этот проект, мне пришлось переключить его на целевую структуру до 4.5.Mixing & Calling .Net 4.5 из .Net Framework 4.0

Проблема в том, что VS жалуется на каждый проект приложения, ссылающийся на этот базовый проект.

  1. Есть ли способ, которым я могу сделать этот базовый целевой проект проекта 4.5 без необходимости изменять весь проект, который ссылается на него.

  2. Могу ли я объединить оба фреймворка и позвонить из проекта .NET 4 в проект .NET 4.5.

  3. Лучшим решением было бы, если бы я мог использовать новую внешнюю ссылку, встроенную в .NET 4.5 (которая вызывает все эти проблемы) из базового проекта без необходимости изменения базового проекта Target to .NET 4.5. Это возможно?

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

+1

Почему бы не изменить их все? .NET 4.5 представляет собой двоичную замену 4.0. Это означает, что просто установка среды выполнения заменяет бинарные файлы 4.0 на 4.5. Нет никакой причины смешивать версии, когда вы все равно закончите 4.5. Вы можете использовать инструмент, такой как [Target Framework Migrator] (https://visualstudiogallery.msdn.microsoft.com/47bded90-80d8-42af-bc35-4736fdd8cd13) для одновременного обновления всех проектов –

+0

. Еще один вариант - остаться в 4.0 и используйте пакеты совместимости, такие как Bcl.Async, Bcl.HttpClient и т. д. Это не даст вам каких-либо преимуществ во время выполнения, таких как сборка фонового сбора –

+0

Это вызовет больше проблем, чем необходимость решать проблемы обновления. На данный момент я использую путь обновления. Я просто надеялся, что может быть простой путь от ворот, чтобы сделать это. Еще раз спасибо за все ваши ценные ответы. –

ответ

0

Я думаю, что предупреждения о сборке хорошо описывают, что произойдет.

создать решение с двумя проектами:

  • ProjectA (Framework версии 4.0)
  • ProjectB (Framework версии 4,5)

ProjectA ссылается ProjectB.

Предупреждения:

The referenced project 'ProjectB' is targeting a higher framework version (4.5) than this project’s current target framework version (4.0). This may lead to build failures if types from assemblies outside this project’s target framework are used by any project in the dependency chain. 


The primary reference "c:\Scratch\ProjectA\ProjectB\bin\Debug\ProjectB.dll" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". ProjectA C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets 1819 

Ваш лучший выбор, чтобы обновить все проекты участвующих.

+0

Я знаю предупреждение и ошибки VS. Думаю, мне все равно придется обновить. –

+0

Этот материал об обновлении очевиден. На самом деле речь идет о том, что обновление не является вариантом, потому что есть некоторые причины не делать этого, например, запускать приложение в Windows XP. – Centro

Смежные вопросы