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

如何在.NET类库项目中隐藏依赖NuGet包的公开类型

配置方案

你想要的效果可以通过SDK风格项目的原生NuGet资产控制配置实现,不需要修改业务代码,也不需要第三方工具。

你提到的Access="Private"是非正式的旧写法,官方支持的标准配置修改方式如下,直接调整你的PackageReference节点即可:

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

  <PropertyGroup>
    <TargetFramework>net6.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="InformationLog" Version="2.1.1">
      <ExcludeAssets>compile</ExcludeAssets>
      <PrivateAssets>analyzers;build;contentFiles</PrivateAssets>
    </PackageReference>
  </ItemGroup>

</Project>

配置说明

  • 核心生效的是<ExcludeAssets>compile</ExcludeAssets>配置:它会阻断InformationLog包的编译时资产向下游项目传递。也就是说所有引用你类库的项目,在编码阶段完全看不到InformationLog下的Log等任何类型,IDE不会给出对应智能提示,也无法直接调用这些类型,仅能看到你自己类库暴露的PublicClass1等公开类型。
  • 该配置没有排除运行时资产,因此下游项目运行时可以正常加载InformationLog程序集,不会出现运行时类型缺失的错误,完全符合你“保留InformationLog作为依赖、引用项目仍需安装对应NuGet包”的要求。
  • <PrivateAssets>节点的配置是将InformationLog附带的代码分析器、构建脚本、内容文件等开发类资产限制为仅你的类库项目可用,不会传递到下游项目造成不必要的干扰。

补充说明:如果你后续将自己的类库打包为NuGet包发布,该配置会自动随包生效,下游用户安装你的类库包时,同样无法在编译阶段访问InformationLog的内部类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:36:26