partha143 Ответов: 3

Выполнение кода во время компиляции


У меня есть проект, который содержит библиотеку 1 класса. У меня есть требование, когда мне нужно проверить какое-то условие с помощью кода C#, когда пользователь компилирует/строит код.

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

Заранее спасибо.

Что я уже пробовал:

Основываясь на своих исследованиях Иона Гогла, я не нашел никакого подходящего ответа на этот вопрос.
Пожалуйста, помогите.

3 Ответов

Рейтинг:
2

Dave Kreskowiak

Без использования предварительно построенного события? Невозможно использовать только Visual Studio. Компилируемый код не будет выполняться во время сборки.

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

У меня нет никаких примеров, и, честно говоря, это очень странное "требование". Если вы думаете, что это может быть использовано в качестве некоторой защиты от кого-то другого, создающего ваш код, вы ошибаетесь. Файл MSBuild - это просто текстовый файл, который можно редактировать, как и любой другой, и ваше "требование" может быть легко удалено.

Погуглите "Custom MSBuild Task" и начните читать.


Рейтинг:
1

CPallini

Вы можете использовать e Pre-Build event. Смотрите, например: Быстрый совет: прерывание сборки в Visual Studio на основе содержимого файла-Sup-a-Dillie-O[^]


partha143

Извините, я забыл упомянуть. Я хочу добиться этого без предварительного события сборки.

Рейтинг:
1

Jochen Arndt

Вы можете использовать события предварительной сборки (Project-Properties-Build Events).

Если у вас есть некоторый код C#, содержащий ваши проверки, создайте приложение командной строки, используя этот код, и верните соответствующее значение. Затем выполните его как событие предварительной сборки. Сборка будет остановлена, если возвращаемое значение не равно нулю. Эти события - просто выполнение командной строки, как в пакетных файлах. Вы можете проверить и установить errorlevel или используйте команду exit (где любое другое значение, отличное от нуля, снова остановит сборку).