Visual Studio 2019 - отсутствуют инструменты MSBuild версии 12 - PullRequest
0 голосов
/ 27 мая 2020

Я бы хотел, чтобы наши разработчики использовали одну версию Visual Studio для всех наших проектов (где это возможно) - с этой целью я попросил их использовать VS2019 для некоторых проектов, которые были первоначально созданы в VS2010, а затем перенесены в VS2013.

Произошло изменение поведения во время выполнения при запуске одного из этих старых приложений веб-форм в VS2019. Я не уверен, почему это отличается, поскольку используемые DLL одинаковы, а скомпилированный IL такой же для рассматриваемого метода, но на данный момент меня не особо заботит его "исправление", так как это потребует создания кода изменения и регрессионное тестирование всего приложения; путь, которого я хотел бы избежать на данный момент.

Я бы хотел убедиться, что VS2019 строится с указанными инструментами, чтобы сохранить прежнее поведение. Файл проекта ссылается на инструменты версии 12 (VS2013 не установлен), но при сборке Visual Studio я вижу следующее в выводе MSBuild:

Файл проекта содержит ToolsVersion = "12.0". Этот набор инструментов может быть неизвестен или отсутствовать, и в этом случае вы можете решить эту проблему, установив соответствующую версию MSBuild, или сборка могла быть принудительно переведена на конкретную версию ToolsVersion по причинам политики. Обработка проекта так, как если бы он имел ToolsVersion = "Current". Для получения дополнительной информации см. http://go.microsoft.com/fwlink/?LinkId=293424.

Я установил MSBuild Tools 2013, но это не помогло устранить проблему до или после перезапуска. Я также пробовал использовать инструменты версии 15 и получил ту же ошибку (VS2017 установлен).

MSBuild из командной строки VS2019 dev работал, но мне пришлось скопировать целевые объекты веб-приложений 14.0 в новую папку с именем «16.0». . Я не уверен, почему есть папка 14.0, а папка 12.0 или 15.0 без дополнительных поисков в Интернете.

Это глупая затея или мне не хватает чего-то простого?

1 Ответ

0 голосов
/ 28 мая 2020

MSBuild из командной строки VS2019 dev работал, но мне пришлось скопировать целевые объекты веб-приложений 14.0 в новую папку с именем «16.0». Я не уверен, почему есть папка 14.0, но нет папок 12.0 или 15.0, без дополнительных поисков в Интернете.

Обновление 1

Это просто быстрое предупреждение, чтобы убедиться, что вам лучше использовать соответствующую версию MSBuild для сборки проекта. Он разработан как напоминание.

Но на самом деле , MSBuild действительно добавляет функцию обратной совместимости.

Это сообщение является скорее предупреждением, чем ошибкой, и не нарушит процесс сборки. И если это нарушит процесс сборки, это может доказать, что обратная совместимость не поддерживается.

Вы можете протестировать это: используйте VS2019 для создания проектов VS2017 или VS2015, и я уверен, что он сможет их успешно построить.

=============================================== =

Каждая версия VS создает проект, созданный для соответствующей версии MSBuild.

Например, , в проекте, созданном в VS2010, это ToolsVersion="4.0", поэтому, когда вы используете MSBuild из VS2010 (msbuild v4.0), он будет построен без этого предупреждения.

VS2013 -> ToolsVersion=12.0, VS2015 -> ToolsVersion=14.0, VS2017 -> ToolsVersion=15.0, VS2019 -> ToolsVersion=Current

Поэтому, когда вы собираете проект, вы должны попробовать соответствующую версию msbuild для их сборки.

Хотя MSBuild поддерживает обратную совместимость, проблема всегда в виде предупреждения, которое беспокоило нас во время миграции проекта.

Решение

Решить это, вы должны использовать relat ed MSBuild , чтобы собрать проект с соответствующей ToolsVersion .

Если вы хотите построить их в VS2017 , вы должны изменить ToolsVersion от до 15.0 в файле xxx.xxproj каждого проекта.

enter image description here

Если вы хотите встроить их в VS2019 , вы должны изменить ToolsVersion на Current в файле xxx.xxproj каждого проекта.

enter image description here

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

...