Пусть мой начать один из ваших недавних комментариев:
... MSBuild признал вывод питона сценария как предупреждения. но это может быть , а также bash, perl, php script или что-то в этом роде. msbuild распознает вывод как предупреждение, и я хочу обработать эти предупреждения как ошибку . ...
Там нет общего «включить предупреждения в ошибки» для любого инструмента мыслимого в MSBuild. Как это могло быть? Каждый инструмент, вызываемый MSBuild, имеет один из способов сделать это, если вообще. Компилятор C++ и компилятор C#, например, имеют определенные параметры командной строки, которые включены в их командную строку файлами msbuild для этих языков - ничего, что мог бы сделать основной движок msbuild.
Так что вам нужно дать указание инструменту (python в контексте вопроса) сделать это, когда захотите. Вы можете сделать это, используя существующее/хорошо известное свойство (TreatWarningsAsErrors
) в качестве триггера. Если оно имеет определенное значение (true
), тогда вам нужно сделать все, что вам нужно, чтобы заставить инструмент выдавать предупреждения как ошибки и действовать соответственно.
Пример:
<PropertyGroup>
<PythonCmd>$(python_bin)\python.exe</PythonCmd>
<PythonCmd Condition="'$(TreatWarningsAsErrors)' == 'true'">$(PythonCmd) -W error</PythonCmd>
<PythonCmd>$(PythonCmd) %(FullPath)</PythonCmd>
</PropertyGroup>
<Exec Command="$(PythonCmd)" .../>
Теперь, если вы не знаете, как именно делают питон делать то, что вы хотите (включить предупреждения в ошибки), нет MSBuild магии, которая может помочь вам сделать это , Вы вдруг do имеют конкретный вопрос на python. Поскольку фактическая проблема, которую вы сейчас имеете, не связана с запуском python из msbuild или, скажем, из командной строки.
Второй вариант: если вы не можете или не хотите использовать Python встроенный в возможности превращения предупреждения в ошибки, вы можете также использовать Exec
-Tasks CustomErrorRegularExpression
-property указать регулярное выражение, которое должно быть treatet как «выход ошибки» с помощью инструмента (здесь python.exe).
Что-то вроде
<PropertyGroup>
<ErrorExp>.*: error :.*</ErrorExp>
<ErrorExp Condition="'$(TreatWarningsAsErrors)' == 'true'">.*: (warning|error) :.*</ErrorExp>
</PropertyGroup>
<Exec ... CustomErrorRegularExpression="$(ErrorExp)"/>
(непроверенная!) Поможет вам начать.
Однако, поскольку Python уже предоставляет способ для установки предупреждений как ошибок (возможно, через -W error
) эта опция излишне запутана.
Опять же, в отношении вашего комментария о потенциальных других используемых инструментах, обратите внимание на то, что вышеупомянутый подход также требует специальных знаний об этих других инструментах и способах их форматирования (если они вообще выполняются), поскольку вам нужно настраивать регулярное выражение для них.
Таким образом, даже этот подход требует определенных знаний об инструменте, который вы вызываете, и не столько msbuild.
Возможно, у меня есть совершенно другая проблема, вопрос или необходимость. Проверяя комментарии к вашему вопросу, похоже, что я не единственный, и тогда вам, возможно, придется изменить свой вопрос или уточнить (возможно, на примере того, что вы уже пробовали), чтобы получить дальнейшую/лучшую помощь ,
Компилятор для C++, но предупреждения, которые вы получаете, предназначены для кода Python. – Ajay
Я так много думал, я просто пытался поместить его в несколько мест в .vcxproj, чтобы посмотреть, поможет ли это. Это не так. Любая идея, как я могу заставить его регистрировать его как ошибки? – Paladin
Так что это вопрос [python], а не вопрос [visual-C++]. Вы неправильно пометили свой вопрос. [Just rtfm] (https://docs.python.org/3.1/library/warnings.html), чтобы найти параметр -W. –