Фон :
У меня есть приложение C # Windows Forms, которое содержит службу Windows и интерфейс, используемый для настройки параметров системы, а также для связи со службой.
Желаемый результат :
Я хотел бы построить две версии решения - версию client со всеми кодами и элементами формы, связанными со службой Windows, и server версия, которая содержит все.
Форма содержит элемент управления с вкладками, где одна вкладка содержит элементы, используемые для взаимодействия со службой Windows с помощью сокетов.Все, чего я на самом деле пытаюсь добиться, - это то, что для полной сборки компилируется вкладка, содержащая элементы, связанные со службой, а для условной сборки эта же вкладка исключается.
Проблема :
На этом этапе я использовал директивы #if для кода, связанного со службой Windows.Например:
#if SERVERBUILD
//Code relating to Windows service that I do not want to compile
//for a client version.
#endif
В приведенном выше примере «SERVERBUILD» соответствует конфигурации сборки, которую я могу выбрать через Configuration Manager (в отличие от стандартной опции сборки «Release»).
Проблема, с которой я столкнулся, состоит в том, что часть кода, который мне пришлось обернуть вокруг этой директивы #if, находится в файле WinForm.Designer.cs в области с именем ' Код, сгенерированный конструктором форм Windows * '.
Кажется, что происходит то, что, когда я изменяю некоторые свойства формы, кажется, что вся эта область кода удаляется и повторно генерируется, удаляя тем самым добавленные мной разделы #if..
- Правильно ли я поступаю?
- Есть ли способ избежать ситуации, когда я теряю изменения, внесенные в WinForm.Designer.cs?code?
Буду очень признателен за любые советы от тех, кто имеет опыт работы с условной компиляцией и подобными вещами.