Как определить символы условной компиляции в отдельном файле (не .csproj или app.config)

Нам нужно определить символ условной компиляции в проекте библиотеки классов. Это не следует проверять в системе управления версиями (это относится не ко всем разработчикам), поэтому его следует определить в другом месте, кроме .csproj или app.config файл. Как этого добиться?


person Edo    schedule 03.08.2009    source источник


Ответы (2)


Я бы определил различные типы сборки в диспетчере конфигурации (меню Сборка Диспетчер конфигурации) и установил каждую из необходимых констант для каждого из типов сборки.

Затем вы можете попросить каждого члена команды просто выбрать тип сборки, который они хотят сделать, и он автоматически будет использовать соответствующие константы. (Я думаю, что последний использованный тип сборки хранится в файле .suo, который является «параметрами пользователя решения», и вы обычно не проверяете свой контроль версий, поэтому он будет поддерживаться специально для каждого пользователя).

Вы можете определить константы препроцессора в командной строке компилятора C#, используя /define переключатель, но у вас возникнет проблема, как это вызвать. Любые изменения, внесенные вами в свойства проекта, будут сохранены в файле .csproj. Вместо этого вам придется делать все свое строительство из командной строки, что, я уверен, вам не понадобится. Вы также можете определить их в сценариях MSBuild, но у вас будет та же проблема.

person Simon P Stevens    schedule 03.08.2009

Это работает:

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

Поэтому просто добавьте что-то вроде следующего в файл csproj.user.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>MySpecialConstant, TestBlahBlah</DefineConstants>
</PropertyGroup>

На самом деле мне больше нравится решение @SimonPStevens, потому что оно использует TFS, а не прячется. Но иногда это проще...

person EBarr    schedule 03.10.2013