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

.NET Core项目如何隐藏NuGet包引入的第三方DLL?

解决NuGet包第三方DLL在.NET Core项目中显示的问题

这个问题的根源其实是.NET Core采用的SDK风格项目和传统.NET Framework项目的MSBuild行为差异:在.NET Framework里,通过targets导入的<None>项不会自动显示在项目结构中,但SDK风格项目会默认把这些导入的文件展示出来,除非你明确告诉它要隐藏。

直接修改你的MyLib.targets文件,给<None>节点加上<Visible>false</Visible>配置就行,这样既能保留复制到输出目录的功能,又能让这些第三方DLL不在Visual Studio项目里显示:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <NativeLibs Include="$(MSBuildThisFileDirectory)**\*.*" Exclude="$(MSBuildThisFileDirectory)**\*.targets" />
    <None Include="@(NativeLibs)">
      <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Visible>false</Visible> <!-- 新增这一行,隐藏文件 -->
    </None>
  </ItemGroup>
</Project>

修改完成后,按以下步骤操作:

  • 重新打包你的NuGet包
  • 更新项目里的包引用,清理项目的bin和obj目录
  • 重新生成项目,你会发现那些第三方DLL不再出现在项目根目录里了,同时依然会正常复制到输出目录

原理很简单:<Visible>false会告诉MSBuild和Visual Studio,这些文件不需要显示在项目结构中,但它们的其他属性(比如CopyToOutputDirectory)依然会生效,完美解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:21:10