Wie Einbetten in einem .NET-Projekt eine XSLT-Datei in der Ausgabe .exe aufgenommen werden?

StackOverflow https://stackoverflow.com/questions/1749017

  •  20-09-2019
  •  | 
  •  

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.

War es hilfreich?

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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top