【问题标题】:json files in a resx are binary instead of textresx 中的 json 文件是二进制而不是文本
【发布时间】:2025-12-25 02:05:13
【问题描述】:

我在测试某些软件时使用了一些测试数据(json 文件)。它是静态数据,我需要在本地和构建机器上运行测试,而我不需要太多控制。为了统一访问测试数据(json 文件),我将它们放入了一个 RESX 文件中,它工作得很好,除了我必须将文件的扩展名从 .json 更改为 .txt。

如果我将其保留为 .json,它将作为“二进制”而不是“文本文件”添加到 resx 文件中。这本身并不是路的尽头......我只是读出了这些位并将其转换回字符串,但是当我尝试反序列化字符串时(在从字节 [] 转换之后)我得到了一个意外的例外char 在位置 0 第 0 行。

“txt”扩展的唯一真正缺点是我在 IDE 中为 JSON 文件丢失了颜色编码。

有没有办法强制 RESX 将 .json 扩展名视为“文本文件”?

【问题讨论】:

  • 您使用什么编码“将其转换回字符串”?
  • @GrawCube Encoding.UTF8 和 Encoding.Default... 两者的错误相同。
  • 我明白了,JSON 文件是用什么编码的?如果你在十六进制编辑器中打开文件,你能看到每个字符之间的空值吗?
  • @GrawCube 在文件的开头我看到 UTF8 格式的字节顺序标记。

标签: c# json resx


【解决方案1】:

也许为时已晚,但是有一个非常简单的方法可以实现您想要的。只需在资源窗口中选择所需的文件,按 F4 或转到“属性”并在那里选择正确的 FileType。它有两个选项:二进制和文本。

【讨论】:

    【解决方案2】:

    我的一位同事刚刚遇到了与 .cshtml 文件类似的问题。当我们将文件重命名为具有已知有效的扩展名时,文件的实际内容似乎并不重要,导致它添加为文本。

    另外,Axm 的建议可以修复它,但我们最初错过了它,因为您无法右键单击资源并选择属性。

    【讨论】: