Ich versuche, den folgenden Code mit CSharpCodeProvider zu kompilieren. Die Datei wurde erfolgreich kompiliert, aber wenn ich auf die generierte EXE-Datei klicke, erhalte ich einen Fehler (Windows sucht nach einer Lösung für dieses Problem) und nichts passiert.Wie kann ich eine Datei aus einer eingebetteten Ressource extrahieren und auf Festplatte speichern?
if (provider.Supports(GeneratorSupport.Resources))
cp.EmbeddedResources.Add("MySql.Data.dll");
Die Datei erfolgreich eingebettet ist (weil ich die Dateigröße erhöht bemerkt:
Wenn ich den Code unter Verwendung CSharpCodeProvider kompilieren, habe ich die MySql.Data.dll
als eingebettete Ressource-Datei mit dieser Codezeile hinzugefügt).
In dem folgenden Code versuche ich, die eingebettete DLL-Datei zu extrahieren und in System32 zu speichern, aber der folgende Code funktioniert aus irgendeinem Grund nicht.
namespace ConsoleApplication1
{
class Program
{
public static void ExtractSaveResource(String filename, String location)
{
//Assembly assembly = Assembly.GetExecutingAssembly();
Assembly a = .Assembly.GetExecutingAssembly();
//Stream stream = assembly.GetManifestResourceStream("Installer.Properties.mydll.dll"); // or whatever
//string my_namespace = a.GetName().Name.ToString();
Stream resFilestream = a.GetManifestResourceStream(filename);
if (resFilestream != null)
{
BinaryReader br = new BinaryReader(resFilestream);
FileStream fs = new FileStream(location, FileMode.Create); // Say
BinaryWriter bw = new BinaryWriter(fs);
byte[] ba = new byte[resFilestream.Length];
resFilestream.Read(ba, 0, ba.Length);
bw.Write(ba);
br.Close();
bw.Close();
resFilestream.Close();
}
// this.Close();
}
static void Main(string[] args)
{
try
{
string systemDir = Environment.SystemDirectory;
ExtractSaveResource("MySql.Data.dll", systemDir);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
Wie kann ich die DLL-Datei zu extrahieren, die als Ressource eingebettet ist und es zu System32 speichern?
Rafik, Sie sollten Sie die Antworten von Thomas Sapp im Folgenden lesen, denn es ist absolut besser als das, was Sie angenommen haben. – motoDrizzt