.NET 8中如何嵌入文本文件并在代码中引用其内容?
.NET 8 嵌入资源并读取内容(不输出到构建目录)
方法一:直接使用嵌入式资源
- 将目标文件添加到项目后,在属性面板设置:
- Build Action:
Embedded Resource - Copy to Output Directory:
Do not copy
- Build Action:
- 通过程序集读取资源内容,注意资源名称格式为「项目命名空间.文件所在路径.文件名」(比如文件放在
Resources文件夹下,命名空间是MyProject,资源名就是MyProject.Resources.config.txt)using System.IO; using System.Reflection; // 获取当前程序集 var assembly = Assembly.GetExecutingAssembly(); // 替换为你的资源全名 var resourceFullName = "MyProject.Resources.config.txt"; using var stream = assembly.GetManifestResourceStream(resourceFullName); using var reader = new StreamReader(stream); string fileContent = reader.ReadToEnd(); - 不确定资源全名时,可以用以下代码列出所有嵌入式资源:
foreach (var name in Assembly.GetExecutingAssembly().GetManifestResourceNames()) { Console.WriteLine(name); }
方法二:使用.resx资源文件(接近原.NET Framework用法)
- 在项目中添加一个.resx文件(右键项目→添加→新建项→资源文件)
- 右键.resx文件→添加现有项,选择要嵌入的文件,此时文件的Build Action会自动设为
Embedded Resource,无需手动修改 - 确保.resx文件的访问修饰符设为
public或internal(在.resx设计器顶部) - 直接通过生成的资源类读取内容,和原代码几乎一致:
// 假设.resx文件名为Resources.resx string fileContent = Resources.my_file;
两种方式都会将资源嵌入到程序集内部,不会单独出现在构建输出目录中,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Overlord Zurg
相关产品推荐
相关产品推荐

