2015-12-08 70 views
1

我有一個包含一些通用過程功能的類庫 - 稱之爲「引擎」。關於嵌入式資源的困惑

我在許多Web應用程序中包含類庫。

引擎庫需要一個XML文件作爲輸入,但內容對每個項目都是唯一的。

此刻我手動將XML文件複製到每個項目中。引擎總是在應用程序路徑中查找文件。

但是,我對嵌入式資源方面有些困惑。爲了驗證XML,我在我的引擎項目中創建了一個XSD,並將Build Action設置爲EmbeddedResource。

在這種情況下,我無法看到將BuildAction設置爲Content和EmbeddedResource之間的差異,這導致我懷疑當前設置的方式。

我在這個級別沒有很多的經驗,所以需要一些指導。任何意見,將不勝感激。

回答

1

EmbeddedResource表示xsd在構建過程中嵌入程序集內部,而Content表示僅將其複製到輸出文件夾。你想要的嵌入式資源的事情聽起來像。

你可以通過這樣的代碼訪問嵌入資源:

string resourceName = "SomeNameSpace.SomeFile.xsd"; 

Assembly assembly = Assembly.GetExecutingAssembly(); 
using (Stream stream = assembly.GetManifestResourceStream(resourceName)) 
{ 
    if (stream == null) 
     throw new ArgumentException("resource not found", "resourceName"); 
    using (StreamReader reader = new StreamReader(stream)) 
    { 
     string result = reader.ReadToEnd(); 
     return result; 
    } 
} 
+0

那麼,這裏要分析的文件嗎? –

+0

手動複製了XML。您只嵌入XSD以驗證複製的XML。你想如何爲單個程序集中的不同項目嵌入不同的XML文件? –

+0

對不起,我只是困惑。在我看來,我有一個XML文件和一個XSD文件 - 上面的代碼讀取了一個XSD文件,但之後我該如何處理它? –