如何为从源文件编译的应用程序分配自定义图标?

在我的程序中,我使用CSharpCodeProvider来从源文件编译另一个应用程序,我使用的代码如下:

public static bool CompileExecutable(String sourceName) { FileInfo sourceFile = new FileInfo(sourceName); CodeDomProvider provider = null; bool compileOk = false; // Select the code provider based on the input file extension. if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS") provider = CodeDomProvider.CreateProvider("CSharp"); else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB") provider = CodeDomProvider.CreateProvider("VisualBasic"); else { Console.WriteLine("Source file must have a .cs or .vb extension"); } if (provider != null) { // Format the executable file name. // Build the output assembly path using the current directory // and _cs.exe or _vb.exe. String exeName = String.Format(@"{0}\{1}.exe", System.Environment.CurrentDirectory, sourceFile.Name.Replace(".", "_")); CompilerParameters cp = new CompilerParameters(); // Generate an executable instead of a class library. cp.GenerateExecutable = true; // Specify the assembly file name to generate. cp.OutputAssembly = exeName; // Save the assembly as a physical file. cp.GenerateInMemory = false; // Set whether to treat all warnings as errors. cp.TreatWarningsAsErrors = false; cp.ReferencedAssemblies.Add("System.dll"); cp.ReferencedAssemblies.Add("System.Windows.Forms.dll"); cp.ReferencedAssemblies.Add("mscorlib.dll"); cp.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll"); // Invoke compilation of the source file. CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceName); if (cr.Errors.Count > 0) { // Display compilation errors. Console.WriteLine("Errors building {0} into {1}", sourceName, cr.PathToAssembly); foreach (CompilerError ce in cr.Errors) { Console.WriteLine(" {0}", ce.ToString()); Console.WriteLine(); } } else { // Display a successful compilation message. Console.WriteLine("Source {0} built into {1} successfully.", sourceName, cr.PathToAssembly); } // Return the results of the compilation. if (cr.Errors.Count > 0) compileOk = false; else compileOk = true; } return compileOk; } 

我把一个名为(source.cs)的文件包含我要编译的程序的源代码,我将它放在与我的应用程序相同的目录中,并从我的应用程序中调用该函数

 CompileExecutable("source.cs"); 

然后编译源代码并将其保存到与我的应用程序相同的目录中。

我现在要做的是添加一个选项,让我为已编译的源代码选择一个自定义图标,因此输出可执行文件将具有我选择的图标,但我不知道如何分配输出可执行文件编译之前的图标。

有关如何在编译之前为输出可执行文件设置自定义图标的任何帮助?

要建立Brian的答案 ,您可以通过指定/win32icon编译器选项来设置自定义图标:

 CompilerParameters parameters = new CompilerParameters(); parameters.CompilerOptions = @"/win32icon:C:\full\path\to\icon.ico"; 

查看/ win32icon编译器选项。

摘要:

/ win32icon选项在输出文件中插入.ico文件,该文件在Windows资源管理器中为输出文件提供所需的外观。