将文本转换为.resources文件

时间:2009-10-21 18:18:43

标签: .net visual-studio embedded-resource

我创建了一个新的VS解决方案,该解决方案需要包含来自其他解决方案的已修改文件子集。两种解决方案都具有默认名称空间“Microsoft.Windows.Controls”。旧解决方案中的程序集名为“WPFToolkit”,新程序集名称为“DatePicker”。我复制到新解决方案的一个文件是名为“ExceptionStringTable.txt”的嵌入式资源。内容如下所示,虽然我不确定它是什么格式:

; DataGrid Selection Commands
DataGrid_SelectAllCommandText=Select All
DataGrid_SelectAllKey=Ctrl+A
DataGrid_SelectAllKeyDisplayString=Ctrl+A

我将文件的“Build Action”设置为“Embedded Resource”,就像在原始解决方案中一样。在运行时,它像这样加载:   

private static ResourceManager _resourceManager =
    new ResourceManager("ExceptionStringTable", typeof(SR).Assembly);

执行代码时   

_resourceManager.GetString(id.String)
我收到了这个运行时异常:

发生了System.Resources.MissingManifestResourceException   Message =“找不到适合指定文化或中性文化的任何资源。确保在编译时将ExceptionStringTable.resources \”正确嵌入或链接到assembly \“DatePicker \”,或者所有附属程序集都需要可加载并完全签名。“

以编程方式列出程序集的资源名称,我得到了这个:

  DatePicker.g.resources
  Microsoft.Windows.Controls.Resources.ExceptionStringTable.txt
  Microsoft.Windows.Controls.Properties.Resources.resources

我必须做什么才能将ExceptionStringTable.txt转换为等效的.resources然后嵌入到我的程序集中,以便uri“ExceptionStringTable”找到它?

1 个答案:

答案 0 :(得分:1)

您需要将txt文件转换为.resource文件:

resgen.exe ExceptionStringTable.txt

这将输出ExceptionStringTable.resources文件。然后需要将此文件添加为嵌入式资源

你可能想检查旧的项目文件,看是否有一个postbuild任务或者是自动执行此任务的。

<强>更新

最简单的方法是将.txt文件转换为.resx文件:

resgen.exe ExceptionStringTable.txt ExceptionStringTable.resx

然后将此文件添加为嵌入式资源。之后,您可以删除旧的.txt文件。