Используйте MSBuild 3.5 с Visual Studio 2010

Как я могу вынудить Visual Studio 2010 использовать MSBuild 3.5 вместо новых 4.0?

9
задан Brian 5 May 2010 в 18:17
поделиться

3 ответа

Я думаю, что вы не можете изменить версию MSBuild, используемую в Visual Studio, без грязного хака.

ToolsVersion

Версия задач, целей и инструментов, используемых MSBuild, определяется атрибутом ToolsVersion в файле проекта.

  • Visual Studio 2008 использует ToolsVersion="3.5"
  • Visual Studio 2010 использует ToolsVersion="4.0"

Проблема: Если вы измените ToolsVersion вручную на 3.5 в файле проекта, Visual Studio 2010 автоматически обновит ToolsVersion файла проекта до 4. 0

Решение

Решение заключается в том, чтобы установить ToolsVersion проекта на 3.6 (или на 4.0, если вы действительно хотите переопределить MSBuild 4.0), а затем в реестре создать следующий ключ :

  • Registry Hive: \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.6
  • Строковое имя ключа: MSBuildToolsPath
  • Значение строкового ключа: NET Framework 3.5 Install Path (C:\Windows\Microsoft.NET\Framework\v3.5)

На машине, где ToolsVersion неизвестна, будет использоваться ToolsVersion по умолчанию.

Дополнительная информация о пользовательском определении набора инструментов.

13
ответ дан 4 December 2019 в 14:27
поделиться

В диалоговом окне свойств проекта можно настроить таргетинг на разные версии среды выполнения:

альтернативный текст http://img14.imageshack.us/img14/3051/ vstargetframework.png

Не уверен, что изменение правил сборки для использования MsBuild 3.5 для целей C # / VB.NET - хорошая идея.

(В приведенном ниже изменении нет необходимости. Использование целевого файла .NET 4 не вызывает никаких проблем.) Редактировать Попробуйте открыть проект C # с помощью текстового редактора и измените эту строку:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

на это:

<Import Project="C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CSharp.targets" />
0
ответ дан 4 December 2019 в 14:27
поделиться

Зачем вам это? Есть ли что-нибудь, поддерживающее 3.5, а 4.0 - нет?

Если вас действительно беспокоит то, что когда код извлекается на машину, на которой не установлен .NET 4, вы можете использовать MSBuild 3.5 для сборки проектов (csproj). Вам необходимо создать файл решения для MSBuild 3.5, поскольку он не принимает sln-файл VS2010.

Когда MSBuild встречает ToolsVersion = "4.0", он обрабатывает его как ToolsVersion = "3.5", а затем все продолжает работать.

В моем проекте с открытым исходным кодом #SNMP используются такие приемы, поэтому исходный код может быть построен на .NET 4, .NET 3.5 и Mono.

1
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: