CSharpCodeProviderを使用してexeを生成しようとしています。exeはWindowsフォームプロジェクトになります。exeには、生成されたアセンブリによって実行時にアクセスされるリソースが必要です。ここで、そのリソースを生成するために、ResourceWriterクラスを使用し、それをコンパイラオプションであるembeddedResourcesに追加します。しかし、それは機能していないようで、MissingManifestResourceExceptionが発生します。
コードは次のとおりです。
FileStream fs = new FileStream("Form1.resources", FileMode.Create);
ResourceWriter writer2 = new ResourceWriter(fs);
writer2.AddResource("bitmap", 3);
writer2.Generate();
writer2.Close();
CSharpCodeProvider code = new CSharpCodeProvider();
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = true;
options.EmbeddedResources.Add("Form1.resources");
options.OutputAssembly = @"C:\screen.exe";
options.GenerateInMemory = false;
options.TreatWarningsAsErrors = false;
options.ReferencedAssemblies.Add("System.Windows.Forms.dll");
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("System.Drawing.dll");
//options.ReferencedAssemblies.Add("System.Resources.dll");
CompilerResults res = code.CompileAssemblyFromFile(options, "Program.cs", "Form1.cs", "Form1.Designer.cs");
私はこれを1週間以上試しているので、誰かが私を助けてくれることを願っています。ありがとうございました。