对嵌入式资源感到困惑
本文关键字:嵌入式 资源 | 更新日期: 2023-09-27 18:26:10
我有一个类库,它包含一些通用的处理功能,称之为"引擎"。
我将类库包含在许多web应用程序中。
引擎库需要一个XML文件作为输入,但内容对于每个项目都是唯一的。
目前,我手动将XML文件复制到每个项目中。引擎总是在应用程序路由中查找文件。
然而,我对嵌入式资源有点困惑。为了验证XML,我在引擎项目中创建了一个XSD,并将Build Action设置为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;
}
}