In meinem Programm, ich bin mit dem CSharpCodeProvider, um eine andere Anwendung aus einer Quelldatei zu kompilieren, indem der Code i'am ist die folgende Liste:Wie kann ich ein benutzerdefiniertes Symbol für eine Anwendung zuweisen, die aus einer Quelldatei kompiliert wurde?
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 <source>_cs.exe or <source>_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;
}
Ich habe eine Datei mit dem Namen (Source.cs), die enthalten den Quellcode des Programms i kompilieren wollen, ich habe es im selben Verzeichnis wie meine Anwendung, und rufen sie die Funktion aus meiner Anwendung
CompileExecutable("source.cs");
Dann wird der Quellcode kompiliert und gespeichert selben Verzeichnis wie meine Anwendung.
Was ich versuche, ist jetzt, eine Option hinzuzufügen, die ich ein benutzerdefiniertes Symbol für den kompilierten Quellcode auswählen kann, so dass die ausführbare Ausgabedatei das Symbol ich gewählt haben, aber ich weiß nicht, wie kann ich Ordnen Sie das Symbol der ausführbaren Datei vor dem Kompilieren zu.
Irgendwelche Hilfe, wie kann ich ein benutzerdefiniertes Symbol für die ausführbare Ausgabedatei festlegen, bevor Sie es kompilieren?
Sind Sie bereit, 3rd-Party-Tools zu betrachten, wenn sie scripted werden können? –
Was meinst du mit Drittanbieter-Tools, muss ich einige andere Tools verwenden, um dies zu erreichen? Ist es nicht möglich, ein Icon für die Ausgabe einfach ausführbar zu machen? –
mögliches Duplikat von [VB 2008 - Änderungssymbol der generierten exe] (http://stackoverflow.com/questions/2164790/vb-2008-change-icon-of-generated-exe) –