Совместимы ли сборки с MsBuild 4.0 с компьютерами, которые имеют только .NET 3.5? - PullRequest
2 голосов
/ 08 февраля 2011

В проекте с целевой платформой 3.5 следующая строка компилируется с MsBuild 4.0:

 aEnumerable.Select(aMethod);

Но MsBuild 3.5 требует от меня написать:

 aEnumerable.Select(item => aMethod(item));

Будут ли оба двоичных файла работать на компьютере без .NET Framework 4.0, но с .NET 3.5?

PS: В то время как я показал пример, использующий «вывод перегрузки метода», то же самое происходит с другими функциями «4.0» (например, «именованные параметры»).

другой заголовок для этого вопроса может быть следующим: Какие функции C # 4.0 / Visual Studio 2010 совместимы с .NET 3.5?

Ответы [ 2 ]

9 голосов
/ 08 февраля 2011

Вы путаете Msbuild и .NET Framework.

Msbuild - это просто инструмент для создания проектов .NET. Версия 4.0 требуется для создания проектов .NET 4, но она также может делать .NET 1.1, 2.0, 3.0, 3.5, 3.5 SP1. Это похоже на использование Word 2010 для открытия файла Word 2003. 2010 откроет оба, но 2003 рухнет, если вы дадите ему файл 2010

В примерах вашего кода показаны различные компоненты, добавленные в платформу в версии 4.0. Вы не можете выполнить код .NET 4 на компьютере, на котором не установлена ​​платформа .NET 4.0. Неважно, что его строит, среда выполнения не сможет понять CLR и не запустит

Что касается самой msBuild: MsBuild 4.0 - это новая версия, в значительной степени обновленная для поддержки .NET 4, но также с собственными функциями. Обратитесь к примечаниям к выпуску msbuild4, если вам нужны эти подробности.

Тем не менее, MsBuild 4 полностью способна производить вывод .NET 3.5, если targetFramework правильно настроен. (Мы перенесли все наши сборки на MsBuild 4.0 задолго до того, как обновили все проекты до платформы .NET 4)

1 голос
/ 08 февраля 2011

Если вы настроили установку на .NET 3.5 SP 1, и она работает, то она будет работать на компьютере с .NET 3.5 с пакетом обновления 1. Если вы не нацелены на 3.5 SP1, вам следует.

Версия 3.5 MSBuild, которая поставляется вместе с .NET 3.5 (и Visual Studio 2008), позволяет создавать проекты .NET для поддержки версий 2.0, 3.0 или 3.5 .NET (также известной как «многоцелевой таргетинг»).

Источник

Я бы добавил, что MSBuild 4 будет обновлен для поддержки .NET Framework 4.0.Разумеется, вам следует самостоятельно протестировать свои установки на виртуальной машине и убедиться, что все работает.

Я просто хотел уточнить, что вам следует использовать метод MsBuild 3.5, если вы хотите устранить любые проблемы с совместимостью, которые могут возникнуть в противном случае.Я подозреваю, что MSBuild 4.0 сохранит поддержку более старого метода, но только что обновлен для поддержки изменений, происходящих в 4.0 .NET Framework.

Команда, подобная следующей, должна работать

msbuild YourSolution.sln /tv:3.5 /p:TargetFrameworkVersion=v3.5 или

msbuild YourSolution.sln /p:TargetFrameworkVersion=v3.5 / tv (или / toolsversion) Указывает, какая версия инструментов MSBuildвы хотите использовать, а свойство TargetFrameworkVersion указывает целевую платформу.В вашем случае достаточно указать это свойство, но если вы хотите использовать набор инструментов 3.5 MSBuild, вы можете разделить его с помощью / tv, как я делал в первой команде.

Source

...