背景:
Windows サービスと、システム設定の構成とサービスとの通信に使用されるインターフェイスを含む C# Windows フォーム アプリケーションがあります。
望ましい結果:
ソリューションの 2 つのバージョンを構築したいと考えています。Windows サービスに関連するすべてのコードとフォーム要素を含むクライアントバージョンと、すべてを含むサーバーバージョンです。
フォームにはタブ付きコントロールが含まれており、1 つのタブには、ソケットを使用して Windows サービスとのインターフェイスに使用される要素が含まれています。私が実際に達成しようとしているのは、完全なビルドではサービス関連の要素を含むタブがコンパイルされ、条件付きビルドでは同じタブが除外されることだけです。
問題:
この段階で、Windows サービス関連のコードに #if ディレクティブを使用しました。例えば:
#if SERVERBUILD
//Code relating to Windows service that I do not want to compile
//for a client version.
#endif
上記の例では、「SERVERBUILD」は、構成マネージャーを介して選択できるビルド構成に対応しています (標準の「リリース」ビルド オプションとは対照的です)。
私が抱えている問題は、この #if ディレクティブをラップする必要があったコードの一部が、WinForm.Designer.cs ファイルの「Windows フォーム デザイナーによって生成されたコード」というタイトルの領域にあることです。
発生しているように見えるのは、フォーム プロパティの一部を変更すると、このコード領域全体が削除されて再生成され、追加した #if セクションが削除されたように見えることです。
- 私はこれを正しい方法で行っていますか?
- WinForm.Designer.cs コードで行った変更が失われる状況を回避する方法はありますか?
条件付きコンパイルなどの経験のある方からのアドバイスをいただければ幸いです。