Нам нужно определить символ условной компиляции в проекте библиотеки классов. Это не следует проверять в системе управления версиями (это относится не ко всем разработчикам), поэтому его следует определить в другом месте, кроме .csproj или app.config файл. Как этого добиться?
Как определить символы условной компиляции в отдельном файле (не .csproj или app.config)
Ответы (2)
Я бы определил различные типы сборки в диспетчере конфигурации (меню Сборка Диспетчер конфигурации) и установил каждую из необходимых констант для каждого из типов сборки.
Затем вы можете попросить каждого члена команды просто выбрать тип сборки, который они хотят сделать, и он автоматически будет использовать соответствующие константы. (Я думаю, что последний использованный тип сборки хранится в файле .suo, который является «параметрами пользователя решения», и вы обычно не проверяете свой контроль версий, поэтому он будет поддерживаться специально для каждого пользователя).
Вы можете определить константы препроцессора в командной строке компилятора C#, используя /define переключатель, но у вас возникнет проблема, как это вызвать. Любые изменения, внесенные вами в свойства проекта, будут сохранены в файле .csproj. Вместо этого вам придется делать все свое строительство из командной строки, что, я уверен, вам не понадобится. Вы также можете определить их в сценариях MSBuild, но у вас будет та же проблема.
Это работает:
Оказывается, вы можете определить условные символы в файле csproj.user
. Я предполагаю, что то же самое будет работать и для других языков, но я не пробовал.
Поэтому просто добавьте что-то вроде следующего в файл csproj.user.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DefineConstants>MySpecialConstant, TestBlahBlah</DefineConstants>
</PropertyGroup>
На самом деле мне больше нравится решение @SimonPStevens, потому что оно использует TFS, а не прячется. Но иногда это проще...