如何创建 .net 核心 class 库

how to create a .net core class library

我是 .net 核心的新手。 我需要一些帮助来配置我的 project.json 文件以使用 .net 核心创建 class 库。其实我读了很多文件,但是因为要读的东西太多了,我迷路了。 我知道我必须使用 NETStandardLibray (https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md),但我不知道如何将它放入我的 config.json 文件中。

这是我的 config.json 文件:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    },
    "xunit": "2.1.0",
    "dotnet-test-xunit": "1.0.0-rc2-build10025"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },
  "testRunner": "xunit"
}

我想构建一个简单的 class 库以在其他项目中重复使用,我还希望它有单元测试。

我这里的主要困难是关于 monikers。他们真是一团糟。我只想构建一个可以在任何平台上使用的 class 库,但看起来我必须在我的 project.json 中选择平台。在已弃用的名字列表中,我不知道应该使用什么名字。为了使用 NET Standard 库,我应该以具有 nuget 标识符 netcoreapp1.0 的平台 .NET Standard Application 1.5 为目标,还是应该使用具有 nuget 标识符 netstandard1.3 的平台 .NET Platform 5.0???什么是正确的平台? NETStandard 库不是应该与平台无关吗?我应该将这些标识符放在依赖项中还是 project.json 的框架部分?这两个部分有什么区别?我完全迷路了:(

你的 class 库本身应该有一个 netstandard1.3 或你想要的任何版本的框架 - Noda Time 的目标是 netstandard1.3 例如,因为我发现有太多不幸的是,netstandard1.0 中没有。我通常会选择您有信心的最低版本。您 想要 netcoreapp1.0 等,因为您正在编写一个库,而不是一个应用程序。

你的单元测试应该在一个单独的项目中,按照 xUnit documentation 配置 - 例如,在桌面上针对 netcoreapp1.0net451 到 运行框架也是。

为了回答您的其他问题,虽然 .NET 标准库与平台无关(就操作系统而言),您仍然需要表达您所依赖的版本 - 如果您需要仅在 netstandard1.5,您不能定位 netstandard1.3,例如。

关于在依赖项部分包含 Microsoft.NETCore.App 等的部分(据我所知)是为了避免必须以模块化方式单独指定每个依赖项。这是一个简单的入门方法,但您以后可能想要更具体,trimming your dependencies to only those you need

肯定还有很多悬而未决的事情,还有很多文档要写,还有很多现在已经过时的文档和过去几年的博客文章......但是进步了正在制作中。