Wie Einbetten in einem .NET-Projekt eine XSLT-Datei in der Ausgabe .exe aufgenommen werden?
Frage
Ich habe eine einfache C # Console App, die in einer XML-Datei liest die dem Benutzer angegeben wird, läuft eine XSLT-Transformation auf sie und gibt die Ergebnisse an.
Wenn ich meine App an Benutzer verteilen, möchte ich eine einzelne EXE-Datei verteilen. Mein Quellcode besteht aus 3 Dateien:. Die CSPROJ Datei, die .cs Code-Datei und einen .xslt Sheet
Wie kann ich die csproj so einrichten, die .xslt „eingebettet“ ist in dem Ausgang und kann nicht durch den Endbenutzer gesehen oder geändert werden?
Es scheint einfach, aber ich kann es nicht herausfinden, und Google ist nicht zu nützlich zu sein.
Lösung
Sie können es in Ihrer Assembly embedd.
Fügen Sie die Datei in Ihrer Lösung, stellen Sie die Build-Aktion eingebettete Ressource.
Der Ort, den Sie die Datei Verwendung lesen müssen http://msdn.microsoft .com / en-us / library / xc4235zt.aspx Assembly.GetManifestResourceStream wich geben Ihnen einen Strom wich Sie direkt zu einem fil oder benutzen Sie schreiben können.
Wenn Sie nicht ganz sicher sind, was Ihre Ressource Namen haben, ich Assembly.GetManifestResourceNames
nützlich, um eine Liste aller Ressourcen finden.
Andere Tipps
Fügen Sie die Datei zu Ihrem Projekt, dann die Datei auswählen und gehen Sie auf die Eigenschaften-Fenster (drücken Sie F4 ). Stellen Sie die Build-Aktion auf „Embedded Ressource“. Dadurch wird die Datei in die EXE-Datei als Ressource eingebettet werden.
using(Stream strm = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourAssemblyName.filename.xslt"))
using (XmlReader reader = XmlReader.Create(strm))
{
XslTransform transform = new XslTransform();
transform.Load(reader);
// use the XslTransform object
}