【问题标题】:Why can't I access a .resx file as an embedded resource?为什么我不能将 .resx 文件作为嵌入式资源访问?
【发布时间】:2013-09-16 11:25:16
【问题描述】:

我想编写一些代码,可以将我的 RESX 文件作为嵌入式资源访问,将它们加载为 XML 文档并对它们执行一些分析(例如检查重复节点)。

请注意,我不是试图将它们作为资源集合来访问,而是作为底层 XML 文件来访问。

以下代码:

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
{
    using (StreamReader streamReader = new StreamReader(stream))
    {
        returnText = streamReader.ReadToEnd();
    }
}

...失败(为stream 变量返回null),当完全相同的代码引用与.resx 文件位于同一目录中的文本文件时,成功。所以看起来GetManifestResourceStream() 似乎故意忽略了.resx 文件。

谁能提出原因,或者我可以做些什么?

【问题讨论】:

  • .resx 文件的默认构建操作是将它们编译为 .resource 文件并将它们嵌入到清单中。因此,资源可以直接以二进制形式使用,而无需在运行时从 xml 转换。目前尚不清楚您如何与构建系统争论以覆盖该行为以及您为什么不喜欢默认方式。错误的资源名称也是一个标准错误,请在编译的二进制文件上使用 ildasm.exe 来查看实际名称。
  • 我根本没有讨论过构建系统。我只是假设我能够将资源分析为 XML。从你的评论看来,我做不到。谢谢,汉斯。

标签: .net c#-4.0 embedded-resource resx


【解决方案1】:

我能够在 Silverlight 项目中获取 embeddeb resx 资源:

string resourceName = "/MyAssemby;component/MyResource.resx";
using (XmlReader reader = XmlReader.Create(resourceName))
{ ... }

但在其他项目中失败,例如在测试中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多