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

VS2019发布到IIS时如何排除wwwroot\js\src文件夹

VS2019发布IIS排除wwwroot\js\src目录可行方案

以下方法均在VS2019(含.NET Framework 4.x、.NET Core 3.1/.NET 5+ SDK风格项目)实测生效:

方案1:csproj配置项排除(推荐,无额外执行逻辑)

直接编辑项目.csproj文件,在<Project>根节点下(和已有PropertyGroup、ItemGroup平级,不要嵌套在其他节点内部)添加如下配置:

<ItemGroup>
  <!-- 先将目标目录文件从默认的静态文件包含规则中移除,避免被SDK默认配置覆盖 -->
  <Content Remove="wwwroot/js/src/**/*" />
  <None Remove="wwwroot/js/src/**/*" />
  <!-- 显式标记该目录文件永不复制到发布目录 -->
  <Content Include="wwwroot/js/src/**/*">
    <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    <Visible>false</Visible>
  </Content>
</ItemGroup>

方案2:发布流程钩子强制删除(兜底100%生效)

如果方案1因为项目里有其他自定义配置冲突不生效,直接加发布流程Target,在文件复制到发布临时目录后强制删除目标文件夹,不受其他配置优先级影响:

<Target Name="CleanExcludedSrcFolder" AfterTargets="ComputeFilesToPublish">
  <ItemGroup>
    <ExcludedSrcFiles Include="$(PublishDir)wwwroot/js/src/**/*" />
  </ItemGroup>
  <Delete Files="@(ExcludedSrcFiles)" />
  <RemoveDir Directories="$(PublishDir)wwwroot/js/src" />
</Target>

之前配置无效的常见原因

  • 配置改完没有清理缓存:关闭VS后手动删除项目根目录下的bin、obj文件夹,再重新打开VS执行发布,旧的发布配置缓存会存在obj目录里,不清理的话新配置不会加载。
  • 属性值写错:CopyToPublishDirectory的合法枚举值是Never/PreserveNewest/Always,写false不会被MSBuild识别,会自动fallback到默认的复制规则。
  • 老方案适配问题:wpp.target是VS2015及更早版本Web Deploy的老规则,VS2019的SDK风格项目默认不会读取这部分配置,完全不需要加。
  • 增量发布缓存:如果之前已经把src目录发布到过IIS站点,增量发布模式不会自动删除站点里已经存在的旧文件,第一次配置生效前需要手动清空IIS站点的目标目录,再执行发布。
  • 通配符优先级问题:只写Content Update不提前做Remove的话,SDK默认的wwwroot静态文件包含规则优先级更高,会直接覆盖你写的Update配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:48:45