如何正确在项目中引入文件目录 使其打包部署后可被代码正常引用
路径引用逻辑说明
你写的路径获取代码逻辑本身没有问题:Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 取的是当前程序集运行时的实际所在目录,拼接资源目录名的写法符合预期。运行时找不到文件的核心原因是**GrammarDictResources 目录及内部文件没有被自动复制到编译输出目录**,和路径写法无关。
文件属性设置说明
给文件设置对应生成属性是必要步骤,Visual Studio 默认仅会将标记为「内容」且配置了复制规则的文件输出到编译目录、包含到部署包中。批量设置有两种可行方案:
方案1:解决方案管理器批量操作
- 在解决方案资源管理器中选中
GrammarDictResources根文件夹 - 点击资源管理器顶部的搜索框,输入
*,将搜索范围限定为当前文件夹,即可列出目录下所有嵌套的子文件 - 按
Ctrl+A全选所有文件,右键点击选择「属性」 - 在属性面板中统一设置两项:
- 生成操作:选择「内容」
- 复制到输出目录:选择「如果较新则复制」(或「始终复制」,按需选择即可)
方案2:直接修改项目文件(更高效)
直接编辑项目的.csproj文件,添加如下配置即可一次性递归包含该目录下所有文件,自动保留目录结构并配置复制规则:
<ItemGroup> <Content Include="GrammarDictResources\**\*"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
配置完成后重新编译,即可在输出目录下看到完整的GrammarDictResources目录结构,你的原路径读取代码即可正常工作,调试、发布部署后都能正常读取到文件。
内容的提问来源于stack exchange,提问作者Glenncito
相关产品推荐
相关产品推荐

