Helpers - компьютеры, интернет, программирование

MSBuild перед этапом сборки


  • Хм, сборки C++ не имеют цели BeforeBuild. Я не вижу подходящего для использования, единственный достойный кандидат, который я вижу, - это цель PreBuildEvent. Но имейте в виду, что при этом вы отключите событие перед сборкой, как указано в настройках. 07.11.2014
  • Пока объявления Target находятся на уровне, разрешенном схемой, их расположение ничего не меняет. 07.11.2014
  • @HansPassant Я не знаю, есть ли у вас понимание, почему, но почему AfterBuild разрешено в Visual C, а BeforeBuild - нет? 07.11.2014
  • Хм, это субъективно, но сборка на C++ слишком уж запутана. Модель сборки датируется 1970-ми годами и за эти годы приобрела много хлама. Слишком много перед целями. У всех есть эта проблема, например, сборка такой общей библиотеки, как Boost, намного идет не так, как надо. Ну, если бы это было легко, то любой мог бы это сделать :) 07.11.2014

Ответы:


1

Цель не вызывается, если не вызывается явно, является целью по умолчанию, объявлена ​​в DependsOn вызываемой цели или объявляет свои собственные BeforeTargets или AfterTargets, и вызывается одна из этих целей.

Итак, если вы хотите, чтобы цель вызывалась перед целью с именем «InitializeBuildStatus», вы можете написать это так:

<Target Name="MyBeforeBuild" BeforeTargets="InitializeBuildStatus">
    <Message Text="###HI###" Importance="High" />
</Target>

Он будет запущен, если будет запущена цель «InitializeBuildStatus». (Вы можете включить подробное ведение журнала в Visual Studio или для запуска MSBuild, чтобы помочь определить соответствующие цели BeforeTarget.)

Цели «BeforeBuild» и «AfterBuild» явно вызываются целевой системой некоторых типов проектов Microsoft. Это предлагает только ограниченную расширяемость. Более новый (.NET 4.0) способ — это BeforeTargets и AfterTargets.

См. раздел целевой порядок сборки.

07.11.2014
  • Это решение, однако, если вы делаете BeforeTargets="Build", оно всегда запускается прямо перед BuildSucceeded. После компиляции и всего остального. Если вы измените BeforeTargets="Build" на BeforeTargets="InitializeBuildStatus", я соглашусь. 07.11.2014
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..