Как я могу обновить ToolVersion в каждом файле .csproj в моем приложении - PullRequest
0 голосов
/ 24 января 2020

У нас есть проект Visual Studio 2013, который .csproj выглядит следующим образом

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

Недавно мы перенесли решение в Visual Studio 2017, но версия инструмента почему-то осталась прежней.

Я использую TeamCity для создания своего проекта, и на сервере teamcity у нас только версия MS build 14. Если я использую его для сборки приложения, я получаю следующую ошибку: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

Что Самый простой способ обновить версию инструмента - это .csproj? Если я обновлю его вручную, это вызовет какие-либо проблемы? есть ли какие-либо другие настройки / конфигурации, которые мне нужно изменить после внесения этих изменений?

1 Ответ

0 голосов
/ 24 января 2020
Я думаю, что

ToolsVersion не является основной причиной этой проблемы, поэтому вы можете смело изменять ее вручную. А для проекта из VS2013 его ToolsVersion должен быть 12.0 вместо 4.0.

VS2013=>12.0, VS2017=>15.0, VS2015=>14.0: Итак, теперь у вас есть один проект, перенесенный с VS2012 на VS2017, и теперь вы используете msbuild VS2015 для его сборки. Для этого сценария вот несколько советов, которые могут помочь:

1. Измените ToolsVersion на 12.0 (или 14.0). Это на самом деле немного влияет.

2. Убедитесь, что вы установили рабочую нагрузку веб-приложения для вашего msbuild 14.0 на сервере. Если ваша msbuild 14.0 поставляется с VS2015, пожалуйста, проверьте, можете ли вы создать в ней новый проект веб-приложения, тогда вы узнаете, установили ли вы веб-нагрузку в VS! (Отсутствующие цели связаны с рабочей нагрузкой веб-приложения, аналогичная проблема приведена в здесь .)

Если вы можете найти отсутствующий файл в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications, попробуйте передать команду /p:VisualStudioVersion=14.0 в команду msbuild, когда вы настраиваете его в teamcity.

3. Наиболее рекомендуемый способ - установить msbuild из более высокой версии VS. MSbuild имеет независимый пакет для VS2017 и VS2019. (Инструменты сборки для VS2017 или VS2019)

Вы можете найти их ссылку для скачивания здесь , см. Инструменты для категории VS. Вы можете установить этот пакет ( Включить веб-загрузку! ) на свой сервер (вам не нужно устанавливать полную VS IDE), а затем вы можете позвонить msbuild.exe из C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin или C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin в teamcity для построения текущего проекта.

Примечание: MSBuild из более высокой версии VS всегда может создавать проекты из более ранних версий VS, но msbuild из более ранних иногда не может распознавать проекты из более высоких версий. Поэтому для сборки проектов из VS2017 рекомендуется использовать msbuild 15.0 вместо msbuild 14.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...