You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2022 Community发布事件触发过早?如何删除发布目录appsettings.json

解决方案

问题根源在于你当前绑定的Publish目标仅完成了编译和输出到临时发布目录(PubTmp\Out),文件复制到最终PublishUrl的操作是在Publish目标之后执行的,因此你的bat脚本执行时,目标目录中还不存在appsettings.json。

以下是两种无需延时的解决方法:

方案一:发布时直接排除文件(推荐)

在MyWebApp.csproj中添加配置,让发布过程跳过appsettings.json的复制,比事后删除更高效:

<ItemGroup>
  <Content Update="appsettings.json" Publish="Never" />
</ItemGroup>

方案二:调整MSBuild目标触发时机

如果你必须在发布完成后删除文件,可修改目标的触发时机为文件复制完成后的PublishFileSystem目标,同时推荐直接使用MSBuild的Delete任务替代bat脚本(更简洁):

<Target Name="DeleteAppSettingsAfterPublish" AfterTargets="PublishFileSystem">
  <Delete Files="$(PublishUrl)\appsettings.json" />
  <Message Text="Deleted appsettings.json from $(PublishUrl)" Condition="Exists('$(PublishUrl)\appsettings.json')" />
  <Message Text="appsettings.json not found in $(PublishUrl)" Condition="!Exists('$(PublishUrl)\appsettings.json')" />
</Target>

若需保留bat脚本,仅修改AfterTargets即可:

<Target Name="AfterPublishDelSet" AfterTargets="PublishFileSystem">
  <Exec Command="dset.bat $(PublishUrl)" />
</Target>

内容的提问来源于stack exchange,提问作者puzzler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:50:19