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

.NET Core 6:如何让传统程序集引用写入顶层App.deps.json?

.NET Core 6中传统程序集依赖无法传递到顶层.deps.json的问题

背景

.NET Core中,.deps.json文件控制程序集加载——如果依赖项不在顶层应用的.deps.json中,除非处理AssemblyResolve事件等操作,否则不会被加载。

场景说明

  • .NET Core 6环境
  • 类库程序集:ClassLib
  • 控制台应用(App.exe):通过项目引用依赖ClassLib

当ClassLib使用NuGet包(如Newtonsoft.Json)时,该依赖会正常出现在App生成的App.deps.json中,运行正常。但ClassLib引用的非NuGet形式的遗留程序集(通过<Reference>节点添加),不会被传递到App的App.deps.json中,导致运行时无法加载这些遗留程序集,引发异常。

项目配置详情

ClassLib.csproj

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

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="Legacy">
      <HintPath>..\path\to\Legacy.dll</HintPath>
      <SpecificVersion>True</SpecificVersion>
    </Reference>
  </ItemGroup>

</Project>

App.csproj

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

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

  <ItemGroup>
    <ProjectReference Include="..\ClassLib\ClassLib.csproj" />
  </ItemGroup>

</Project>

生成的App.deps.json问题

生成的App.deps.json中仅包含ClassLib对NuGet包的依赖,未包含Legacy.dll:

"ClassLib/1.0.0": {
        "dependencies": {
          "Newtonsoft.Json": "13.0.2"
        },
        "runtime": {
          "ClassLib.dll": {}
        }
      }

已尝试调整<Reference>节点的CopyLocal/Private等配置,均未改变App.deps.json的生成结果。

问题咨询

  1. 是否能让构建系统像处理NuGet包引用一样处理传统程序集引用,将依赖传递到顶层项目?
  2. 若无法实现,能否自定义构建流程,在构建时将依赖注入到.deps.json文件中?
  3. 难道只能选择打包NuGet包或处理AssemblyResolve事件?

内容的提问来源于Stack Exchange,提问作者RobinG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:30:57