You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中SQL资源文件返回字节数组,如何恢复为字符串读取?

解决ASP.NET Core资源中SQL文件从字节数组转回字符串读取的问题

方法1:手动转换字节数组为字符串

如果当前资源文件生成的代码返回字节数组,直接在调用时将其转成字符串即可,注意匹配SQL文件的实际编码(通常用UTF-8):

// 获取字节数组
byte[] sqlBytes = (byte[])Pg.ResourceManager.GetObject("YourSqlResourceKey");
// 转换为字符串
string sqlContent = Encoding.UTF8.GetString(sqlBytes);

怕每次转换麻烦的话,可以自己写个partial类封装(别直接改自动生成的Pg.Designer.cs,会被覆盖):

// 新建Pg.cs文件,和Pg.Designer.cs同命名空间
public partial class Pg
{
    public static string GetSqlContent(string resourceKey)
    {
        var bytes = ResourceManager.GetObject(resourceKey) as byte[];
        return bytes != null ? Encoding.UTF8.GetString(bytes) : string.Empty;
    }
}

// 调用时直接用
string sql = Pg.GetSqlContent("YourSqlResourceKey");

方法2:修改资源配置让生成器自动返回字符串

直接调整.resx文件的资源项设置,让自动生成的代码回到用GetString的逻辑:

  1. 打开Pg.resx文件,找到对应的SQL资源项。
  2. 在右侧属性面板里,把类型从System.Byte[]改成System.String,同时确认编码设置正确(比如UTF-8)。
  3. 保存.resx文件,重新生成项目,Pg.Designer.cs里的对应代码就会自动换成ResourceManager.GetString,直接返回字符串。

如果是刚添加SQL文件到资源,添加时注意:

  • 在.resx编辑器点「添加资源」→「添加现有文件」,选中SQL文件后,立刻在属性面板把类型设为System.String,避免被识别为二进制资源。

方法3:直接修改.resx的XML内容(兜底方案)

如果可视化编辑器的设置不生效,直接打开.resx的XML视图调整:
找到对应资源的<data>节点,把带二进制引用的格式:

<data name="YourSqlResourceKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>YourSqlFile.sql;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>

改成直接存储文本的格式:

<data name="YourSqlResourceKey" xml:space="preserve">
    <value>-- 这里是你的SQL语句内容
SELECT * FROM YourTable;
</value>
</data>

保存后重新生成项目,Designer文件就会生成返回字符串的代码。

内容的提问来源于stack exchange,提问作者Chhim Kakada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:45:07