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

Visual Studio 2022发布时Microsoft.TypeScript.MSBuild误删TS生成文件的解决咨询

解决Visual Studio 2022发布时TypeScript编译输出被删除的问题

问题说明

使用Visual Studio 2022发布项目时,所有.d.ts、tsBuildInfoFile文件以及此前TypeScript编译生成的.js文件都会被删除,但常规构建(无论Release还是Debug模式)时不会出现该问题。查看Microsoft.TypeScript.MSBuild NuGet包的Microsoft.TypeScript.targets文件,发现存在多个负责清理TS编译输出的Target:

<Target Name="TypeScriptDeleteCompilerOutput" ...
<Target Name="TypeScriptDeleteOutputFromOtherConfigs" ...
<Target Name="TypeScriptBuildModeClean" ...

解决方案

要阻止这些清理Target在发布阶段运行,可在项目的.csproj文件中添加以下配置:

方法1:禁用发布阶段的特定清理Target

直接覆盖这些Target的执行条件,让它们仅在非发布场景下运行:

<!-- 禁止发布时执行TS编译输出清理 -->
<Target Name="TypeScriptDeleteCompilerOutput" BeforeTargets="TypeScriptCompile" Condition="'$(PublishProfileName)' == ''" />
<Target Name="TypeScriptDeleteOutputFromOtherConfigs" BeforeTargets="TypeScriptCompile" Condition="'$(PublishProfileName)' == ''" />
<Target Name="TypeScriptBuildModeClean" BeforeTargets="TypeScriptCompile" Condition="'$(PublishProfileName)' == ''" />

核心逻辑:通过Condition="'$(PublishProfileName)' == ''"判断当前是否为发布操作,仅当无发布配置名称(即常规构建)时,才执行这些清理Target。

方法2:修改发布清理的文件排除规则

如果方法1无效,可调整发布阶段的清理行为,直接排除TS相关输出文件:

<PropertyGroup>
  <!-- 发布清理时跳过TS编译生成的文件 -->
  <ExcludeFromClean>$(ExcludeFromClean);**/*.d.ts;**/*.js;**/*.tsbuildinfo</ExcludeFromClean>
</PropertyGroup>

此配置会让发布流程的清理步骤忽略指定的TS相关文件。

版本适配

以上方案适用于Visual Studio 17.4.1、Microsoft.TypeScript.MSBuild NuGet包4.8.4版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:45:33