【问题标题】:.NETStandard Library 1.6.0 dependency in .NET Core application.NET Core 应用程序中的 .NETStandard Library 1.6.0 依赖项
【发布时间】:2017-04-13 22:53:58
【问题描述】:

使用 Visual Studio 2015 ASP.NET Core 应用程序使用类库 ASP.NET Core 应用程序和类库在创建项目时具有 .NET Framework 4.5.2 平台 类库具有 .NETStandard Library 1.6.0 依赖项 此应用程序是在 .NET Core 目标运行时启动还是需要完整的 .NET Framework?

这是一些快照

solution explorer of .net core class library

project.json of .net core class library

【问题讨论】:

    标签: c# .net asp.net-core


    【解决方案1】:

    根据https://docs.microsoft.com/en-us/dotnet/articles/standard/library.NET Core 1.0 实现了.NET Standard 1.6。

    是的,您的 .NET Standard 1.6 库与 .NET Core 应用程序兼容。 .NET 4.5.2 应用程序将不使用它,因为还没有 .NET 框架版本实现 1.6。

    【讨论】:

      【解决方案2】:

      根据您所附的屏幕截图,您的类库将仅与 .NET Core 兼容,不需要与 .NET Framework。

      顺便说一下,了解 NETStandard.Library(NuGet 包)和 “.NET Standard”(目标框架)之间的区别很重要。

      简而言之:

      .NET Standard,目标框架,是一个 API 规范。仅针对 netstandard1.6 的项目还不是 .NET Core 应用程序。这是一个非常有用的类比:https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7

      NETStandard.Library 是一个包https://www.nuget.org/packages/NETStandard.Library/1.6.0。这实际上是一个元包,即它包含许多其他包,如 System.Collections.Generic 和 System.Console。这些为 C# 编译器提供了有关 .NET Standard(API 规范)中的内容的信息,以便它知道您可以使用哪些 API。这意味着可以将“NETStandard.Library v1.6.0”添加为不仅仅是 .NET Standard 1.6 的依赖项。

      另外,仅供参考 - 如果您使用 Visual Studio 2017 和 csproj 而不是 project.json,则无需在项目文件中列出 NETStandard.Library。它是自动可用的。

      【讨论】:

        【解决方案3】:

        为了解决这个问题,我对 NetStandard 1.6.1 项目的 csproj 执行了以下操作:

        <Project Sdk="Microsoft.NET.Sdk">
          <PropertyGroup>
            <TargetFramework>netstandard1.6</TargetFramework>
        
            <!-- BEGIN INSERTION -->
        
            <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
            <PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
            <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
            <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
            <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
        
            <!-- END INSERTION -->
        
          </PropertyGroup>
        
          <ItemGroup>
            <PackageReference Include="[some stuff here]" Version="[some stuff here]" />
            <PackageReference Include="[some stuff here]" Version="[some stuff here]" />
            <PackageReference Include="[some stuff here]" Version="[some stuff here]" />
          </ItemGroup>
        
          <ItemGroup>
            <ProjectReference Include="[some stuff here]" />
          </ItemGroup>
        
        </Project>

        【讨论】:

          猜你喜欢
          • 2020-07-08
          • 2021-03-22
          • 2020-02-14
          • 2020-02-18
          • 1970-01-01
          • 2016-12-12
          • 2017-08-16
          • 1970-01-01
          • 2019-05-07
          相关资源
          最近更新 更多