对嵌入式资源感到困惑

Confused about embedded resources

我有一个 class 库,其中包含一些通用的处理功能 - 称之为 "Engine"。

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

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

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

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

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

我在这方面经验不多,因此需要一些指导。如有任何建议,我们将不胜感激。

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;
    }
}