2009-11-17 22 views
7

Kullanıcının belirttiği bir XML dosyasında okuyan, üzerinde bir XSLT dönüşümü yürüten ve sonuçları veren basit bir C# Konsol Uygulaması var.Bir .exe projesinde bir exe dosyasına dahil edilmek üzere bir XSLT dosyası nasıl gömülür?

Uygulamamı kullanıcılara dağıtırken, tek bir .EXE dosyası dağıtmak istiyorum. Kaynak kodum 3 dosyadan oluşur: .csproj dosyası, .cs kod dosyası ve bir .xslt stil sayfası.

Csproj'i nasıl kurabilirim, böylece .xslt çıktının içinde "gömülüdür" ve son kullanıcı tarafından görülemez veya değiştirilemez mi?

Kolay görünüyor, ancak bunu anlayamıyorum ve Google çok kullanışlı değil.

cevap

13

Derlemenizi içine yerleştirebilirsiniz.

Dosyayı çözümünüze ekleyin, yapı eylemini yerleşik kaynağa ayarlayın.

Dosyayı okumak için ihtiyacınız olan yer, bir filme yazabileceğiniz veya doğrudan kullanabileceğiniz bir akış sağlayacak http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStream öğesini kullanır.

Kaynağınızın adını tam olarak bilmiyorsanız, tüm kaynakları listelemek için Assembly.GetManifestResourceNames numaralı telefonu kullanabilirsiniz.

+0

+1: Tam Olarak Sağ . –

29

Dosyayı projenize ekleyin, ardından dosyayı seçin ve Özellikler penceresine gidin (F4 tuşlarına basın). Oluştur eylemini "Gömülü kaynak" olarak ayarlayın. Bu, dosyanın bir kaynak olarak exe dosyasına gömülmesine neden olur.

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 
} 
+1

Fredrik'in örneğini artırmak için, uygulamanızın ad alanını "YourAssemblyName" olarak kullanabilirsiniz, "... GetManifestResourceStream (" This.is.my.namespace.filename.xslt ")) – user1585514

İlgili konular