2009-11-17 57 views
7

我有一個簡單的C#控制檯應用程序,它讀入指定用戶的XML文件,在其上運行XSLT轉換並輸出結果。如何在.NET項目中嵌入XSLT文件以包含在輸出.exe中?

當我將應用程序分發給用戶時,我想分發一個.EXE文件。我的源代碼由3個文件組成:.csproj文件,.cs代碼文件和.xslt樣式表。

如何設置csproj,以便.xslt在輸出內「嵌入」,並且不會被最終用戶看到或修改?

看起來很簡單,但我無法弄清楚,谷歌沒有太多用處。

回答

13

您可以將它嵌入到程序集中。

在解決方案中添加文件,將生成操作設置爲嵌入式資源。

您需要閱讀文件的地方使用http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStream這將爲您提供一個流,您可以寫入文件或直接使用。

如果您不太確定資源的名稱,我發現Assembly.GetManifestResourceNames有用列出所有資源。

+0

+1:完全正確。 – 2009-11-17 13:58:14

29

將文件添加到您的項目,然後選擇文件並轉到屬性窗口(按F4)。將構建操作設置爲「嵌入式資源」。這將導致文件作爲資源被嵌入到exe文件中。

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的示例,您可以使用您的應用程序的名稱空間作爲「YourAssemblyName」,如... GetManifestResourceStream(「This.is.my.namespace.filename.xslt」)) – user1585514 2012-08-08 17:51:13

相關問題