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

如何在构建时从.deps.json中排除开发依赖项?

控制.deps.json文件生成并排除开发依赖的解决方案

一、能否在构建时控制.deps.json的生成并排除开发依赖?

完全可以。.deps.json的生成逻辑由MSBuild属性控制,针对分析器、构建专用这类开发依赖,有几种精准排除的方式:

  • 针对分析器包(如Microsoft.VisualStudio.Threading.Analyzers):确保包引用的<IncludeAssets>设为analyzers,同时<PrivateAssets>设为all,它们就不会被写入.deps.json。
  • 针对构建专用包(如Microsoft.Build.CopyOnWrite、Microsoft.SourceLink.GitHub):添加<ExcludeFromDependencyFile>true</ExcludeFromDependencyFile>配置,明确从.deps.json中排除这类构建时工具。
  • 全局禁用.deps.json生成:若完全不需要该文件,可在PropertyGroup里设置<GenerateDependencyFile>false</GenerateDependencyFile>,但不推荐全局禁用,除非明确不需要依赖解析逻辑。

二、为什么配置PrivateAssets=all后,Microsoft.Build.CopyOnWrite仍出现在.deps.json中?

<PrivateAssets>all</PrivateAssets>的作用是控制依赖是否被复制到输出目录,而非控制是否被记录到.deps.json里。.deps.json会追踪所有参与构建过程的依赖,包括构建工具类包,所以仅靠PrivateAssets无法排除它。

要把这类构建包从.deps.json中移除,需在包引用里添加<ExcludeFromDependencyFile>true</ExcludeFromDependencyFile>,修改后的项目文件如下:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Build.CopyOnWrite" Version="1.0.334">
      <PrivateAssets>all</PrivateAssets>
      <ExcludeFromDependencyFile>true</ExcludeFromDependencyFile>
    </PackageReference>
  </ItemGroup>

</Project>

另外,对于SourceLink这类包,还可通过设置<PublishRepositoryUrl>false</PublishRepositoryUrl>避免相关依赖被写入,但核心还是用ExcludeFromDependencyFile来精准控制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:43:20