UWP打包及VS F5调试时类似MSDeploy自定义文件拷贝实现方法
UWP 打包/调试时自动拷贝自定义文件到AppX目录配置方法
传统Web部署场景下使用的PipelineCopyAllFilesToOneFolderForMsdeployDependsOn构建钩子不适用于UWP项目,你可以通过UWP构建流程原生提供的目标挂载点实现完全相同的能力,修改.csproj后可同时覆盖F5启动调试、Visual Studio执行应用打包两种场景,不需要额外手动操作。
具体配置步骤
- 右键你的UWP项目,选择「卸载项目」,再次右键选择「编辑 你的项目名.csproj」
- 滚动到
.csproj文件末尾,在</Project>闭合标签之前插入以下自定义构建目标:
<Target Name="CopyCustomFilesToAppx" AfterTargets="BuildAppxLayout"> <!-- 定义需要拷贝的自定义文件规则 --> <ItemGroup> <!-- 示例规则:拷贝项目根目录下CustomFiles文件夹内的所有文件,保留原有目录结构 --> <CustomCopySource Include="$(ProjectDir)CustomFiles\**\*.*" /> </ItemGroup> <!-- 执行拷贝,$(AppxLayoutDir)为UWP构建流程内置的AppX输出目录属性,自动适配调试/打包场景 --> <Copy SourceFiles="@(CustomCopySource)" DestinationFiles="@(CustomCopySource->'$(AppxLayoutDir)%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" /> </Target>
- 保存
.csproj文件,右键项目选择「重新加载项目」即可生效。
配置说明
- 你可以根据自己的需求修改
<CustomCopySource>的Include属性,调整要拷贝的文件路径匹配规则;如果需要排除特定文件,追加Exclude属性填写要排除的文件通配符即可。 - 如果不需要保留源文件的目录层级,把
DestinationFiles规则里的%(RecursiveDir)删除,所有匹配到的文件会直接拷贝到AppX根目录。 - 该目标的触发时机是AppX目录布局构建完成、正式启动调试/生成安装包之前,拷贝进去的文件会自动被打包进应用安装包,也会在F5调试时被加载到调试应用的工作目录,不需要你提前在Visual Studio里把对应文件设置为「内容」生成项。
- 你可以直接进入项目输出路径下的
bin\<目标架构>\<构建配置>\AppX目录,验证自定义文件是否拷贝成功。
内容的提问来源于stack exchange,提问作者sorosh_sabz
相关产品推荐
相关产品推荐

