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

C#能否从Assembly(程序集)中读取流数据?

如何从.NET程序集中读取内部流数据?

当然可以,程序集中的内部流一般指嵌入的资源文件,只要把文件标记为嵌入资源,就能通过Assembly类的相关方法读取。下面是具体步骤和代码示例:

步骤1:将文件标记为嵌入资源

在Visual Studio中,选中要嵌入的文件(比如txt、json、二进制文件等),右键选择「属性」,将「生成操作」设置为嵌入的资源。

步骤2:读取嵌入资源的流

获取程序集实例

  • 读取当前运行的程序集:Assembly.GetExecutingAssembly()
  • 读取外部程序集:Assembly.LoadFrom("你的程序集路径.dll/.exe")

读取资源流

使用GetManifestResourceStream()方法,注意资源名称的格式是项目命名空间.文件名(如果文件在子文件夹里,还要加上文件夹路径,比如MyApp.Folder.File.txt)。

完整代码示例

using System;
using System.IO;
using System.Reflection;

class ResourceReader
{
    static void Main()
    {
        // 获取当前程序集
        Assembly assembly = Assembly.GetExecutingAssembly();
        // 替换为你的资源名称,可通过下面的代码获取所有资源名确认
        string resourceName = "MyProjectNamespace.MyEmbeddedFile.txt";

        // 读取资源流
        using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
        {
            if (resourceStream == null)
            {
                Console.WriteLine("未找到指定的嵌入资源,请检查资源名称是否正确");
                return;
            }

            // 示例:读取文本内容
            using (StreamReader reader = new StreamReader(resourceStream))
            {
                string content = reader.ReadToEnd();
                Console.WriteLine("资源内容:");
                Console.WriteLine(content);
            }
        }
    }
}

如何确认资源名称?

如果不确定资源的完整名称,可以用下面的代码列出程序集所有嵌入资源的名称:

Assembly assembly = Assembly.GetExecutingAssembly();
foreach (string resourceName in assembly.GetManifestResourceNames())
{
    Console.WriteLine("资源名称:" + resourceName);
}

读取外部程序集的资源

如果要读取外部程序集里的嵌入资源,只需替换程序集的获取方式:

// 加载外部程序集
Assembly externalAssembly = Assembly.LoadFrom(@"D:\Projects\MyExternalAssembly.dll");
// 读取资源流(资源名称格式和目标程序集的命名空间一致)
using (Stream stream = externalAssembly.GetManifestResourceStream("ExternalNamespace.Data.bin"))
{
    // 处理流数据
}

内容的提问来源于stack exchange,提问作者awthz Zei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:15:32