c# - 如何创建.net core类库

标签 c# .net .net-core .net-core-rc2 .net-standard-1.5

我是 .net core 的新手。 我需要一些帮助来配置我的project.json 文件以使用.net core 创建类库。我实际上读了很多文档,但由于有太多的东西要读,所以我很迷失。 我知道我必须使用 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"
}

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

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

最佳答案

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

您的单元测试应该位于一个单独的项目中,并按照xUnit documentation进行配置。 - 例如,定位 netcoreapp1.0 以及 net451 也可以在桌面框架上运行。

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

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

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

关于c# - 如何创建.net core类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972886/

相关文章:

c# - C# 中的 Foreach struct 奇怪的编译错误

c# - Visual Studio 安装程序 UI 集成

c# - 如何将 SQL 连接字符串与 ADO.NET 实体数据模型一起使用

C#:CommandLineParser 如何解析URL?

.net - 使用Microsoft WCF对P2P分布式系统进行编程

.net-core - Blazor 路由在同一页面中更改

asp.net-core - 哪些版本的 Windows Server 与 .NET Core 运行时 RID 匹配

c# - 是否可以在将在 Linux 中运行的 .Net Core 控制台应用程序中使用 .Net Framework 4.5 Dll 引用

.net - SemaphoreSlim.Wait( CancellationToken ) 对OperationCancelledException 进行正确的try/finally 吗?

c# - 如何配置.net core api中使用的默认XmlSerializer