views:

200

answers:

2

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 resources 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?

+3  A: 
  • 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:

    1. Make a simpler Form without resource file.
    2. use a #else tag to create empty stubs for the Form1 class
    3. 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?

Henk Holterman
There will be two versions of the program. Due to safety reasons some Forms (and functionality) should be excluded in the deployment version. So 3) is not a solution for me, because the Form still exists in the .exe.
Simon Ottenhaus
Ps: workaround 2) solves all problems. There are no more warnings, even the designer works with the stubs (when reopened).
Simon Ottenhaus
A: 

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.

jmservera