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

无法找到类型或命名空间‘Assembly’,如何获取嵌入资源访问引用?

解决“类型或命名空间‘Assembly’无法找到”及嵌入资源访问问题

这个问题我之前处理.NET嵌入资源时也碰到过,核心原因要么是缺少必要的命名空间引用,要么是后续可能遇到的嵌入资源名称配置错误,咱们一步步来搞定:

第一步:解决Assembly找不到的错误

Assembly和GetTypeInfo类型都属于System.Reflection命名空间,你只需要在代码文件的最顶部添加这个using指令:

using System.Reflection;

如果你用的是.NET Framework(非.NET Core/.NET 5+),也可以直接简化成Assembly assembly = Assembly.GetExecutingAssembly();,不过你当前的写法在新框架里完全兼容,只要加了上面的using就没问题。

第二步:确保嵌入资源的名称正确

你代码里的"Documents.Huckleberry.Txt"大概率有格式问题,嵌入资源的名称规则是**[你的项目程序集名称].[资源所在的文件夹层级].[文件名]**,而且是严格区分大小写的!
举个实际例子:

  • 如果你的项目名称是MyBookReader
  • 资源文件放在项目根目录的Documents文件夹里,文件名叫Huckleberry.txt
  • 那正确的资源名应该是MyBookReader.Documents.Huckleberry.txt

排查资源名称的小技巧

可以在代码里加一段调试代码,打印出所有嵌入资源的名称,这样就能精准找到你要的那个:

Assembly assembly = typeof(YourCurrentClass).GetTypeInfo().Assembly;
// 打印所有嵌入资源名称
foreach (var resName in assembly.GetManifestResourceNames())
{
    Console.WriteLine(resName);
}

把YourCurrentClass替换成你当前写这段代码的类名就行。

第三步:确认资源的生成操作设置

在Visual Studio里右键你的Huckleberry.txt文件→属性,把「生成操作」设置为嵌入的资源,这一步很容易遗漏,一定要检查!

修正后的完整代码示例

using System.Reflection;
using System.IO;

public class BookLoader
{
    public void LoadHuckleberryText()
    {
        // 用typeof代替GetType()更稳妥,避免子类继承时的Assembly偏差
        Assembly assembly = typeof(BookLoader).GetTypeInfo().Assembly;
        // 替换成你实际的资源名称(从调试输出里复制)
        string resourceName = "MyBookReader.Documents.Huckleberry.txt";
        
        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        {
            // 加个判断,避免资源找不到时出现空引用异常
            if (stream == null)
            {
                throw new InvalidOperationException($"找不到嵌入资源:{resourceName},请检查资源名称和生成操作设置");
            }
            
            using (StreamReader reader = new StreamReader(stream))
            {
                bool gotTitle = false;
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (!gotTitle)
                    {
                        // 处理标题行逻辑
                        Console.WriteLine($"标题:{line}");
                        gotTitle = true;
                    }
                    else
                    {
                        // 处理正文内容
                        Console.WriteLine(line);
                    }
                }
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Brandon Lukowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:51