对嵌入式资源感到困惑

时间:2015-12-08 12:56:45

标签: c# asp.net embedded-resource

我有一个包含一些通用处理功能的类库 - 称之为"引擎"。

我将类库包含在许多Web应用程序中。

引擎库需要一个XML文件作为输入,但内容对每个项目都是唯一的。

目前我手动将XML文件复制到每个项目中。引擎始终在应用程序路径中查找文件。

但是,我对嵌入式资源有点困惑。为了验证XML,我在我的引擎项目中创建了一个XSD,并将Build Action设置为EmbeddedResource。

在这种情况下,我无法看到将BuildAction设置为Content和EmbeddedResource之间的区别,这让我怀疑当前设置的方式。

我在这个级别上没有很多经验,所以需要一些指导。任何建议将不胜感激。

1 个答案:

答案 0 :(得分: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;
    }
}