Я задавался вопросом, существует ли способ условно скомпилировать все пространства имен в C#. Или меня оставляют с необходимостью явно украсить каждый исходный файл в пространстве имен с директивами препроцессору для исключения его? В подверсиях моего приложения просто не требуется код в различном пространстве имен, и я хотел бы исключенный.
Заранее спасибо!
Если ваше пространство имен находится в отдельной сборке, которая не содержит ничего другого, вы можете использовать Configuration Manager для своей конкретной подверсии и снять флажок «Сборка».
Если у вас есть другие классы в сборке, хотя они явно не будут построены или включены, то единственный способ - украсить их объявлениями препроцессора.
Вы можете сделать это, украсив каждый файл, или выбрать, какие файлы включить. И MSBuild, и csc имеют опции для включения всех файлов по пути, а MSBuild дополнительно имеет возможность условно включать элементы сборки на основе атрибута (вместо того, чтобы требовать отдельный csproj для каждой конфигурации).
Но, вероятно, проще украшать файлы напрямую ;-p
Вам нужно будет поместить директиву условной компиляции в каждый файл. Невозможно пометить все пространство имен как условно скомпилированное.
Как Майкл отмечает в своем ответе , возможное решение состоит в том, чтобы выделить условный код в отдельный проект (сборку) и отправить эту сборку только для конфигураций, которые этого требуют; но это будет зависеть от природы условного кода.