如何在不将文件设为资源的情况下访问dll项目内文件夹中的文件
解决方法
1. 配置文件生成属性
首先对dll项目中存放文件的文件夹/对应文件做属性配置:
- 选中目标文件夹或其下所有文件,在属性面板将「生成操作」设置为无,「复制到输出目录」设置为如果较新则复制。
- 后续新增文件只要继承该配置,编译时就会自动同步到输出目录的对应层级,无需修改资源配置或重新编译核心逻辑。
2. 代码中读取文件夹
你可以通过获取dll自身所在目录,拼接目标文件夹路径实现访问,示例代码如下:
兼容全.NET版本的写法
using System.IO; using System.Reflection; // 获取当前运行的dll所在目录 string dllDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); // 拼接你的文件夹名称,比如你的文件夹叫FileStorage就填"FileStorage" string targetFolder = Path.Combine(dllDir, "你的文件夹名"); if (Directory.Exists(targetFolder)) { // 读取所有文件示例 string[] allFiles = Directory.GetFiles(targetFolder, "*.*", SearchOption.AllDirectories); foreach (string file in allFiles) { // 自定义文件处理逻辑 string content = File.ReadAllText(file); } }
.NET Core/.NET 5+ 简化写法
该写法兼容单文件发布场景:
using System.IO; string targetFolder = Path.Combine(AppContext.BaseDirectory, "你的文件夹名"); // 后续文件处理逻辑同上
注意事项
- 当该dll被其他主项目引用时,只要dll项目的文件属性配置正确,主项目编译时会自动将对应文件夹同步到自身输出目录,无需额外配置。
- 运行时可直接往程序运行目录下的对应文件夹新增/删除文件,无需重新编译dll或主项目,完全适配文件数量不固定的需求。
项目结构参考:
内容的提问来源于stack exchange,提问作者Alex Pertenava
相关产品推荐
相关产品推荐


