2015-12-08 67 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文件,但之后我该如何处理它? –