【问题标题】:Problem with creating ResXResourceSet object from the embedded resource file从嵌入式资源文件创建 ResXResourceSet 对象的问题
【发布时间】:2011-02-07 10:32:03
【问题描述】:

我正在尝试打开一个 resx 文件,该文件是我的 C# 项目中的资源。我需要创建一个 ResXResourceSet 对象。但是在运行时会引发“路径中的非法字符”异常。这是我正在尝试使用的代码。

var resX = new ResXResourceSet(Project.Properties.Resources.ResXFile);

ResXResourceSet 类只有两个构造函数(来自流和来自文件名)。在这种情况下如何创建 ResXResourceSet 类的对象?

【问题讨论】:

  • 您将 .resx 文件的 content 作为字符串嵌入到您的资源中。这不是您想要的,.resx 文件应该由 resgen.exe 编译。而是将文件添加到您的项目中。

标签: c# .net xml resx


【解决方案1】:

使用Project.Properties.Resources.ResourceManager.GetStream("ResXFile");

如果我理解正确,ResXFile 中的值是包含 ResX 完整内容的字符串,而不是文件路径,这是 ResXResourceSet 在传递字符串时所期望的。你需要在它周围包裹一个流。

有关从字符串中获取流的信息,请参阅此问题:how to generate a stream from a string?

另外,如果你把资源文件做成一个项目项,就像主资源一样,你可以通过它的ResourceManager访问它的ResourceSet:ResXFile.ResourceManager.GetResourceSet()

您可以通过右键单击项目 > 添加 > 新项目 > 资源文件来将 ResX 添加到项目中。

【讨论】:

  • 感谢您的回复。但是,不幸的是,它不起作用。 Project.Properties.Resources.ResXFile 的类型是字符串。而且我无法从中获取流或调用 GetResourceSet() 方法。
  • 谢谢!这次它解决了从字符串生成流的问题。但我想知道,如何将资源文件转换为项目文件以便使用 ResXFile.ResourceManager.GetResourceSet() 方法?
  • 只需在项目中添加一个新的资源文件即可。我更新了答案。
  • 非常感谢您的帮助和详细的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 2013-11-25
  • 2011-05-09
  • 2013-07-10
  • 2011-10-30
相关资源
最近更新 更多