代码之家  ›  专栏  ›  技术社区  ›  HappyNomad

将文本转换为.resources文件

  •  0
  • HappyNomad  · 技术社区  · 15 年前

    我创建了一个新的vs解决方案,它需要包含来自另一个解决方案的修改过的文件子集。两个解决方案的默认命名空间均为“microsoft.windows.controls”。旧解决方案中的程序集名为“wpftoolkit”,新程序集名为“datepicker”。我复制到新解决方案的其中一个文件是名为“exceptionstringtable.txt”的嵌入资源。内容如下,虽然我不确定它是什么格式:

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

    我将文件的“构建操作”设置为“嵌入资源”,就像在原始解决方案中一样。在运行时,它的加载方式如下:

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

    在执行代码时

    _resourceManager.GetString(id.String)
    我正在接收此运行时异常:

    发生System.Resources.MissingManifestResourceException message=“找不到任何适合指定区域性或非特定区域性的资源。确保\“exceptionstringtable.resources”在编译时正确嵌入或链接到程序集\“datepicker”中,或者所需的所有附属程序集都是可加载和完全签名的。

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

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Johannes Gustafsson    15 年前

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

    resgen.exe ExceptionStringTable.txt
    

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

    您可能需要检查旧的项目文件,以查看是否有生成后任务或自动执行此操作的内容。

    更新:

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

    resgen.exe ExceptionStringTable.txt ExceptionStringTable.resx
    

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