.NET Core 生产环境下如何包含指定文件夹?
解决ASP.NET Core发布后找不到邮件模板文件的问题
我来帮你搞定这个发布时模板丢失的问题!你遇到的核心问题是:Debug模式下项目文件都在源码目录里,能正常找到模板;但生产发布时,默认不会把Email文件夹下的.cshtml文件复制到输出目录,所以代码运行时找不到文件。
正确的.csproj配置方案
把你之前的<Views Include="Email\**" />替换成下面的配置,它会确保邮件模板文件被包含到发布包中:
<ItemGroup> <Content Include="Email\**\*.cshtml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
配置说明:
<Content>:标记这些文件为项目的内容资源,告诉构建系统需要处理它们Email\**\*.cshtml:递归匹配Email文件夹下所有的.cshtml模板文件(包括子目录,如果有的话)<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>:确保构建或发布时,把这些文件复制到输出目录,并且只复制比输出目录中已有文件更新的版本,避免重复复制
额外检查点
- 确认
Config.Env.ContentRootPath在生产环境指向的是发布后的输出目录,而不是你的本地源码目录。生产环境中源码目录通常不会部署到服务器,所以必须依赖复制到输出目录的模板文件。 - 如果你的模板文件有更新,重新发布前可以先清理项目(右键项目 → 清理)再构建发布,确保最新的模板被复制。
内容的提问来源于stack exchange,提问作者Alvin Stefanus
相关产品推荐
相关产品推荐

