@daniil14056

Как Правильно реализовать условную компиляцию с#?

Как именно на этапе создания проекта организовать разделение на версии. Без #директив. Или можно как-то на этапе компиляции отключать аттрибуты.
Нужно к примеру, ввести отчет о состояние объектов и ввести логирования, для одной версии программы, к примеру с помощью инъекции а для другой полностью убрать функционал для большей производительности.
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 5
@rPman
Конечно можно вставлять в код самого приложения обычные условные операторы, проверяющие версию,.. но почему обязательно хотите избежать #директив препроцессора, фактически он для таких вещей и создавался!

Не хотите пользоваться штатным препроцессором - пилите свой, который будет под нужную версию подготавливать проект для сборки, буквально собирая его из файлов. Т.е. это будет приложение (простенькие скрипты и какое-то описание файлов проекта) которое вы будете запускать для создания релиза.
Ответ написан
Комментировать
1. Конфиги и тупо через if вырубать логи
2. #-директивы
3. Condition в msbuild
4. Assembly weaving
5. Partial-методы в сочетании с 2 и/или 3
6. Использовать ООП - в случае логов можно инжектить тупую заглушку, которая ничего не делает
Больше вариантов нет.
Ответ написан
Комментировать
Нужно к примеру, ввести отчет о состояние объектов и ввести логирования, для одной версии программы, к примеру с помощью инъекции а для другой полностью убрать функционал для большей производительности.

Всё это можно делать при помощи конфигурационных файлов
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
В случае логгирования выбирайте любой логгер. И в конфиге настраивайте уровень ошибок. Тормоза сразу уйдут если убрать уровень до нуля.
Кроме того используйте

Debug
Trace

Они превращаются в пустышки при релизе
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
посмотрите сюда ecsharp.net
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы