我有一个包含一些通用处理功能的类库 - 称之为"引擎"。
我将类库包含在许多Web应用程序中。
引擎库需要一个XML文件作为输入,但内容对每个项目都是唯一的。
目前我手动将XML文件复制到每个项目中。引擎始终在应用程序路径中查找文件。
但是,我对嵌入式资源有点困惑。为了验证XML,我在我的引擎项目中创建了一个XSD,并将Build Action设置为EmbeddedResource。
在这种情况下,我无法看到将BuildAction设置为Content和EmbeddedResource之间的区别,这让我怀疑当前设置的方式。
我在这个级别上没有很多经验,所以需要一些指导。任何建议将不胜感激。
答案 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;
}
}