如何创建跨平台.net核心库?

时间:2016-10-17 14:41:45

标签: asp.net-core nuget nuget-package .net-core coreclr

如何在.Net核心中创建C#库,可以使用Nuget包在经典的.Net 4.6.2和.Net核心项目之间共享。我阅读了有关开发跨平台库的文档here。所以我设置我的project.json如下

{
  "version": "1.0.0-*",

  "frameworks": {
    "netstandard1.6": {
      "dependencies": {
        "NETStandard.Library": "1.6.0"
      }
    },
    "net462": {          
    }
  }
}

然后我通过执行以下命令创建了nugect pckage

   dotnet pack -c Release

然后发布了nuget包。我的包裹名称是DTO。

在我的traget .net核心项目中,我能够毫无问题地安装nuget包。但是,当我尝试在经典.net 4.6.2项目中安装软件包时,我收到错误

  

install-Package:无法安装包'DTO 1.0.0'。你是   尝试将此软件包安装到目标项目中   '.NETFramework,Version = v4.6.2',但包中不包含任何内容   程序集引用或与之兼容的内容文件   框架。有关更多信息,请与软件包作者联系。在线:1   char:1 + Install-Package DTO + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo:   未指定:(:) [Install-Package],Exception + FullyQualifiedErrorId   :   NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

请注意,nuget包托管在我的本地服务器上。

1 个答案:

答案 0 :(得分:1)

你采取了正确的方向。如果您希望跨多个框架兼容,那么以.NET Standard为目标是正确的。

但是,您应该参考此矩阵以获取每个框架支持的.NET标准版本。

https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md#mapping-the-net-platform-standard-to-platforms

根据此表, .NET Framework 4.6.2支持.NET Standard 1.5 (不是您指定的1.6)。所以这是你的答案。

有关.NET Standard 1.5支持的程序集的更多详细信息,请访问以下链接:

https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md#list-of-net-corefx-apis-and-their-associated-net-platform-standard-version