代码之家  ›  专栏  ›  技术社区  ›  Daniel James Bryars

如何停止在NetStandard中拖动NetStandard 1.0 Nuget。4.7.1项目中的库?

  •  0
  • Daniel James Bryars  · 技术社区  · 7 年前

    我已经创建了一个Net标准项目,并使用dotnet应用程序的pack命令使用Nuget对其进行了打包。

    C:\Program Files\dotnet\dotnet.exe" pack src/Acp.Framework.Essentials
    

    这将在以下Nuget包中创建NetStandard 1.0类程序集:

    NuGet Package Explorer showing reference to netstandard1.0

    如果我在Visual Studio中将此Nuget包添加到Windows Classic桌面。Net控制台应用程序的目标是它在NetStandard中拖动的4.7.1版本。图书馆1.6.1 Nuget软件包及其一长串外观。这些dll被复制到bin文件夹,其中包括应用程序中的所有重定向。配置。

    我不想安装这些facades(既不想安装Nuget引用,也不想复制到输出文件夹),也不想在应用程序中重定向。

    我的理解是,对于4.7.1,您不需要NetStandard。图书馆我的理解正确吗?

    我是否需要更改Nuget包以阻止他们被拉进来,我是否做错了其他事情?

    在消费项目的项目文件中

    <Project ToolsVersion="15.0" ... />
    <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
    

    我曾在Visual Studio 2017 15.4.1和15.4.2中尝试过这一点。

    如果我直接引用dll,或者通过项目而不是Nuget引用dll,那么效果很好

    1 回复  |  直到 7 年前
        1
  •  3
  •   Brandon Minnick    4 年前

    我的理解是,对于4.7.1,您不需要NetStandard。图书馆我的理解正确吗?

    是的,你说得对。

    这个 NETStandard.Library 包引用了一组NuGet包,这些包定义了 .NET 标准库。就像 Microsoft.AspNetCore 包,该包本身不包含DLL,而是引用了许多其他包。

    此外 NETStandard。图书馆 包通常由项目引用,但不是由库引用。因此,NETStandard library包不应被库引用。和 此依赖关系在版本2.0.4中更改 ,您可以使用目标框架创建项目 .NET Standard 2.0

    enter image description here

    看见 What is the NETStandard.Library metapackage? 了解更多详细信息。

    此外,您可以禁用 NETStandard。图书馆 依赖项不会被包含为NuGet包的依赖项,而不会完全禁用隐式引用,如下所示:

    <ItemGroup>
        <PackageReference Update="NETStandard.Library" PrivateAssets="all" />
    </ItemGroup>
    

    或者,您可以通过NuGet Package Explorer直接删除该依赖项。

    希望这有帮助。

    编辑 :更新为包括 Johan B's comment, below ,使用 PrivateAssets="all"