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

如何在npm Build后编译生成文件并让VSCode识别生成的C#代码?

解决构建时生成C#代码且IDE可识别的方案

一、项目文件(csproj)配置

通过静态声明文件路径确保IDE识别,同时构建流程确保生成步骤先于编译执行:

<!-- 静态声明生成文件路径,让IDE感知到代码位置 -->
<ItemGroup>
  <!-- 文件已生成时,作为编译项包含 -->
  <Compile Include="generated/**/*.cs" Condition="Exists('generated')" />
  <!-- 文件未生成时,先以None类型包含,IDE仍能识别路径 -->
  <None Include="generated/**/*.cs" Condition="!Exists('generated')" />
</ItemGroup>

<!-- 定义npm安装目标,依赖于npm构建目标 -->
<Target Name="NpmInstall" BeforeTargets="NpmRunBuild">
  <Exec Command="npm install" WorkingDirectory="$(ProjectDir)" />
</Target>

<!-- 定义npm构建目标,确保在编译前执行 -->
<Target Name="NpmRunBuild" BeforeTargets="CoreCompile">
  <Exec Command="npm run build" WorkingDirectory="$(ProjectDir)" />
  <!-- 强制更新编译项,确保生成的文件被纳入编译 -->
  <ItemGroup>
    <Compile Include="generated/**/*.cs" />
  </ItemGroup>
</Target>

<!-- 禁用快速更新检查,避免增量构建跳过npm步骤 -->
<PropertyGroup>
  <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
</PropertyGroup>

<!-- 清理时自动删除生成的文件夹 -->
<Target Name="CleanGeneratedFiles" AfterTargets="Clean">
  <RemoveDir Directories="generated" />
</Target>

二、VSCode配置优化

修改.vscode/settings.json,让C#扩展的Omnisharp引擎扫描生成文件夹:

{
  "omnisharp.includeGeneratedCode": true,
  "omnisharp.fileOptions.excludeSearchPatterns": [
    "!generated/**/*"
  ]
}

三、额外说明

  • 首次打开项目时,若generated文件夹尚未生成,IDE可能会暂时提示找不到代码,执行一次dotnet build或手动运行npm run build生成文件后,提示会自动消失。
  • 上述配置确保了构建流程的正确性:先安装npm依赖、生成C#代码,再执行项目编译;同时让IDE能提前识别生成文件的路径,提供代码跳转、智能提示等功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:25:11