我有一個簡單的C#控制檯應用程序,它讀入指定用戶的XML文件,在其上運行XSLT轉換並輸出結果。如何在.NET項目中嵌入XSLT文件以包含在輸出.exe中?
當我將應用程序分發給用戶時,我想分發一個.EXE文件。我的源代碼由3個文件組成:.csproj文件,.cs代碼文件和.xslt樣式表。
如何設置csproj,以便.xslt在輸出內「嵌入」,並且不會被最終用戶看到或修改?
看起來很簡單,但我無法弄清楚,谷歌沒有太多用處。
我有一個簡單的C#控制檯應用程序,它讀入指定用戶的XML文件,在其上運行XSLT轉換並輸出結果。如何在.NET項目中嵌入XSLT文件以包含在輸出.exe中?
當我將應用程序分發給用戶時,我想分發一個.EXE文件。我的源代碼由3個文件組成:.csproj文件,.cs代碼文件和.xslt樣式表。
如何設置csproj,以便.xslt在輸出內「嵌入」,並且不會被最終用戶看到或修改?
看起來很簡單,但我無法弄清楚,谷歌沒有太多用處。
您可以將它嵌入到程序集中。
在解決方案中添加文件,將生成操作設置爲嵌入式資源。
您需要閱讀文件的地方使用http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStream這將爲您提供一個流,您可以寫入文件或直接使用。
如果您不太確定資源的名稱,我發現Assembly.GetManifestResourceNames
有用列出所有資源。
將文件添加到您的項目,然後選擇文件並轉到屬性窗口(按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
}
爲了增強Fredrik的示例,您可以使用您的應用程序的名稱空間作爲「YourAssemblyName」,如... GetManifestResourceStream(「This.is.my.namespace.filename.xslt」)) – user1585514 2012-08-08 17:51:13
+1:完全正確。 – 2009-11-17 13:58:14