首页 文章

NetCore项目直接在项目根级别显示来自nuget包的托管dll

提问于
浏览
0

我创建了包含第三方dll的Nuget包 . (它的目标是netstandard2.0和net462)

这些dll与“MyLib.targets”文件一起位于nuget包中的“build”级别 .

在“lib”级别下是MyLib.dll .

如果我使用nuget包与net462项目所有外观和工作正常 . dll在项目中不可见,将被复制到输出目录(由于.targets文件) .

如果我创建NetCore2.0项目并使用我的包,它工作正常,dll被复制到输出目录,但所有dll(其中12个)将在项目的根目录下的VS中可见 . 所以我的Program.cs文件最终在dll地狱的中间 .

如果我尝试删除它们,我会收到消息:无法修改源自导入文件的评估对象.... .targets .

有没有办法隐藏Visual Studio项目中我的Nuget包附带的第三方dll?

.targets文件是堆栈溢出的片段:

<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>
    </None>
  </ItemGroup>
</Project>

1 回答

  • 1

    您可以将 Visible 元数据设置为 false ,告诉VS不在解决方案资源管理器中显示该项:

    <None Include="…">
      …
      <Visible>false</Visible>
    </None>
    

    有关元数据属性的文档,请参阅Common MSBuild Project Items .

相关问题