2013-04-08 50 views
4

我有一個XSLT文件,我想加載並用它來轉換一個XML文件。我已經將該文件添加到與使用它相同的項目,並將其放入「Resources」文件夾並將Build Action設置爲「Resource」。作爲來自同一項目的資源訪問XSLT文件?

這是一個嘗試訪問該文件的代碼:

 XslCompiledTransform myXslTransform = new XslCompiledTransform(); 

     myXslTransform.Load(@"[projectName];component/Resources/OrderManagement/OrderOverview.xslt"); 

...其中[項目]是該項目的名稱。但是,這似乎並不奏效。我玩過不同的路徑,但不知怎的,我似乎沒有把它做好。我確信這只是一件小事,但我在互聯網上(或這裏)找到的文章都沒有幫助我。

任何人都可以幫忙嗎?

回答

5

一位同事幫我找到了解決方案。我們通過項目的屬性添加資源,以便我可以輕鬆訪問其內容並使用以下代碼。

using (var reader = new StringReader(Resources.OrderOverview)) { 
    using (XmlReader xmlReader = XmlReader.Create(reader)) { 
    myXslTransform.Load(xmlReader); 
    myXslTransform.Transform(fileName, arguments, xmlTextWriter); 
    } 
} 

這與outcoldman建議的資源訪問不同的細微差別非常相似。

3

變化從資源生成操作嵌入的資源,在這之後,你可以這樣做

XslCompiledTransform myXslTransform = new XslCompiledTransform(); 

var assembly = typeof(SomeTypeFromAssemblyWithResource).Assembly; 
using (var stream = assembly.GetManifestResourceStream("Resources.OrderManagement.OrderOverview.xslt")) 
{ 
    using (var xmlReader = XmlReader.Create(stream)) 
    { 
     myXslTransform.Load(xmlReader); 
    } 
} 

在DLL資源名稱可能會非常棘手,所以也許你想先用Assembly.GetManifestResourceNames知道資源名稱。編譯器根據文件夾和程序集生成名稱。

+0

到目前爲止,我已經嘗試過這種方法沒有成功,但會明白我是否可以在明天開始工作。 – 2013-04-08 22:03:00

+0

是的,讓我知道你是否會卡住。我從頭開始寫這個,所以這段代碼可能有錯誤。 – outcoldman 2013-04-08 22:24:31

相關問題