对嵌入式资源感到困惑
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;
}
}
我有一个 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;
}
}