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

为何Release文件夹与发布输出文件夹的.deps.json文件大小存在差异?

Why the .deps.json File Size Differs Between Build and Publish in .NET Core 2.0?

嘿,这个问题我在做.NET Core 2.0项目的时候刚好碰到过,当时也好奇了半天,后来查了官方文档和实践验证搞明白了,主要是这几个原因:

  • 编译(Build)生成的.deps.json是项目级精简版:
    编译阶段的核心是把你的代码转换成IL文件,生成的.deps.json只记录当前项目直接引用的依赖项、它们的版本以及开发环境下的本地路径,仅仅满足开发时运行程序的需求,内容相对简洁,所以体积更小。

  • 发布(Publish)生成的.deps.json是部署完整版:
    发布操作是为了把项目打包成可部署的产物,这个过程会做更多的依赖处理:

    • 递归解析所有传递依赖(就是你引用的包依赖的其他包),把这些深层依赖的详细信息都写入文件;
    • 如果是框架依赖发布,会明确标注目标环境需要的.NET Core运行时版本和对应的框架依赖包;
    • 还会加入部署相关的配置项,比如不同操作系统的兼容性标记、依赖文件的部署路径映射等,这些额外内容自然会让文件体积变大。
  • 发布时的依赖优化处理:
    .NET Core 2.0的发布过程会对依赖做一些部署前的优化(比如部分依赖的合并、路径整理),这些优化后的依赖关系也会被完整记录到.deps.json里,而编译阶段不会做这些操作,所以发布后的文件会比编译后的多出不少内容。

举个简单的例子:编译后的.deps.json可能只列了你项目直接引用的Newtonsoft.Json,但发布后的文件里会同时包含Newtonsoft.Json依赖的System.Runtime.CompilerServices.Unsafe等传递依赖,还有运行时需要的System.Private.CoreLib相关的框架依赖信息,这些都是体积增加的核心原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:57:46