If you are embedding the .resx file directly into the assembly then that is probably incorrect. Although the compiler will let you embed any file, the default format expected and understood by the managed environment is the binary '.resources' format.
Resx can be thought of as the source code for a binary resource and Visual Studio uses resgen.exe to convert between the two as shown by this (heavily edited) output from the compilation of a simple program.
Target CoreResGen:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\Resgen.exe"
/compile Form1.resx,obj\Debug\ResourceTest.Form1.resources
Processing resource file "Form1.resx" into "obj\Debug\ResourceTest.Form1.resources".
Target CoreCompile:
Task "Csc"
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe
/out:obj\Debug\ResourceTest.exe
/resource:obj\Debug\ResourceTest.Form1.resources
/target:winexe Form1.cs Form1.Designer.cs Program.cs
I don't think the .NET framework class library has anything that implements the functionality of the resgen.exe tool and your only recourse will be to run it with the correct arguments via Process.Start.
[EDIT]
Use CompilerParameters.EmbeddedResources and ensure that the resources associated with forms are given the correct name.
For the following form the resource must be named ResourceTest.Form1.resources
namespace ResourceTest {
public class Form1 : Form {}
}
The MissingManifestResourceException will occur if the ComponentResourceManager cannot find the correctly named resource. e.g. If I change the name of the binary resource file from ResourceTest.
Form1.resources to ResourceTest.
Form2.resources then the program raises the exception.
Alan.