.NET Core 2.1发布时如何包含AppData文件夹及所有子内容?
.NET Core 2.1发布时包含AppData文件夹的解决方案
我来帮你搞定这个问题!在.NET Core 2.1项目里,要让AppData文件夹及其所有子文件、子文件夹在发布时被一并包含,关键是要明确告诉MSBuild既要识别这些文件,还要把它们复制到输出目录。你之前尝试的配置没生效,主要是缺少了复制相关的核心属性,下面给你两种可行的方案:
方案一:使用<Content>节点(推荐用于静态内容文件)
把AppData下的所有文件标记为内容文件,并设置自动复制到输出目录:
<ItemGroup> <Content Include="AppData\**\*"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
AppData\**\*表示递归匹配AppData文件夹下所有层级的子文件夹和文件;PreserveNewest属性会让MSBuild只复制比输出目录中对应文件更新的源文件,既能保证内容同步,又能提升构建效率。
方案二:使用<None>节点(适用于非内容类文件)
如果AppData里的文件不需要被标记为内容(比如一些工具脚本、配置模板),可以用<None>节点实现同样的复制效果:
<ItemGroup> <None Include="AppData\**\*"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
为什么你之前的配置无效?
- 第一种
<Folder Include="AppData\*" />:只是让Visual Studio在解决方案资源管理器中显示这个文件夹,并不会将其中的文件包含到发布输出里; - 第二种
<Content Include="AppData\**" LinkBase="AppData" />:虽然标记了文件为内容,但缺少CopyToOutputDirectory属性,MSBuild不会把这些文件复制到输出目录,发布自然就看不到它们了。
配置完成后,重新发布项目,AppData文件夹及其内容就会出现在发布目录里啦!
内容的提问来源于stack exchange,提问作者Aleks Vujic
相关产品推荐
相关产品推荐

