C# exclude complete form / usercontrol by using compiler constants
I'd like to exclude / include a complete form in my project. But when I add the needed #if CONST
and #endif
the compiler complains about resou开发者_如何学JAVArces that may get wrong names.
warning MSB3042: A namespace or class definition was found within a conditional compilation directive in the file "Form1.cs". This may lead to an incorrect choice for the manifest resource name for resource "Form1.resx".
What does this mean?
And how do I fix it?
Explanation: A normal Form (created from a Template) consists of 2 .cs files and a .resx file. By eliminating the Form1 class you 'orphan' the resources.
Workarounds:
- Make a simpler Form without resource file.
- use a #else tag to create empty stubs for the Form1 class
- Forget about the idea and only eliminate the (few) points where the rest of the program uses the Form.
I favor 3, what benefits do you expect from removing the Form?
If you did not set images and you don't use the resx for translations (i.e. your form is not localizable) try to remove your Form1.resx.
Move your #if CONST
/ #endif
region, so that it is within the derived form class declaration encompassing the entire contents of the partial class in Form1.cs. The default constructor will takeover, and your warning will go away.
精彩评论