В чем разница между <RequiredTargetFramework> и <targetframeworkversion>?
Мы обновили наши проекты .net 3.5 (С#) до .net 4.0. Когда вы смотрите файл проекта, есть два тега, которые я пытаюсь понять:
<RequiredTargetFramework>3.5</RequiredTargetFramework>
<TargetFrameworkVersion>4.0</TargetFrameworkVersion>
Почему существуют два, казалось бы, похожих тега с разными значениями?
Ответы
Ответ 1
Элемент <RequiredTargetFramework>
уже присутствовал в вашем проекте 3.5. Он связан с сборкой <Reference>
и присутствует только в сборках, которые недоступны в .NET 2.0
Я не покупаю много акций в единственном упоминании об этом в MSDN, я не вижу, как в пакетном построении есть что-то, что можно сделать с ссылками на сборку. Он также не используется ни в одном из 3.5 файлов MSBuild.target. Я думаю, что IDE просто использует его, чтобы поместить значок предупреждения рядом со ссылкой в ссылках node, когда вы изменяете целевую структуру до версии, меньшей, чем то, что необходимо для поддержки сборки.
В файле проекта есть другие элементы, которые не влияют на MSBuild, но имеют эффект в среде IDE. Как <SubType>
и <DependentUpon>
в элементе <Compile>
.
Ответ 2
Вы нашли эту ссылку? текст ссылки. TargetFrameworkversion - это просто, что вы можете изменить в свойствах проекта, чтобы сказать, с какой структурой следует строить против. В статье говорится, что RequiredTargetFramework используется для пакетных элементов (но он по-прежнему не ясен в этой реальности, кроме того, что он не используется много)
группирует элементы Reference по их метаданным RequiredTargetFramework. Результат цели выглядит следующим образом:
Ссылка: 3.5; 3.5
Ссылка: 4.0
Целевая группировка редко используется в реальных сборках. Выделение задач более распространено. Для получения дополнительной информации см. Раздел MSBuild Batching.