Wie können eingebettete Ressourcen zu einer Datei hinzugefügt werden, die zur Laufzeit aus einer Quelldatei kompiliert wird?
Ich schreibe eine kleine Anwendung, die eine Datei aus einer Quellcode-Datei (.cs) mit einer Funktion kompiliert:
<code>public static bool CompileExecutable(String sourceName) { //Source file that you are compliling FileInfo sourceFile = new FileInfo(sourceName); //Create a C# code provider CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); //Create a bool variable for to to use after the complie proccess to see if there are any erros bool compileOk = false; //Make a name for the exe String exeName = String.Format(@"{0}\{1}.exe", System.Environment.CurrentDirectory, sourceFile.Name.Replace(".", "_")); //Creates a variable, cp, to set the complier parameters CompilerParameters cp = new CompilerParameters(); //You can generate a dll or a exe file, in this case we'll make an exe so we set this to true cp.GenerateExecutable = true; //Set the name cp.OutputAssembly = exeName; //Save the exe as a physical file cp.GenerateInMemory = false; //Set the compliere to not treat warranings as erros cp.TreatWarningsAsErrors = false; //Make it compile CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceName); //if there are more then 0 erros... if (cr.Errors.Count > 0) { //A message box shows the erros that occured MessageBox.Show("Errors building {0} into {1}" + sourceName + cr.PathToAssembly); //for each error that occured in the code make a separete message box foreach (CompilerError ce in cr.Errors) { MessageBox.Show(" {0}" + ce.ToString()); } } //if there are no erros... else { //a message box shows compliere results and a success message MessageBox.Show("Source {0} built into {1} successfully." + sourceName + cr.PathToAssembly); } //if there are erros... if (cr.Errors.Count > 0) { //the bool variable that we made in the beggining is set to flase so the functions returns a false compileOk = false; } //if there are no erros... else { //we are returning a true (success) compileOk = true; } //return the result return compileOk; } </code>
Was ich erreichen möchte, ist das Hinzufügen von benutzerdefinierten Dateiressourcen (Bilder, MP3, AVI, TTF, ... usw.), die mit der obigen Funktion als eingebettete Ressourcen zum Kompilierten hinzugefügt werden.
Wie können wir einer Datei eingebettete Ressourcen hinzufügen, die zur Laufzeit aus einer Quelldatei kompiliert wird?