将共享库与 .NET Core 一起使用

Using Shared Libraries with .NET Core

我使用共享库编写了我的开源库 LINQ to Twitter,以最大限度地减少部署工件并处理特定于平台的功能。我想支持 .NET Core,我认为最快的方法是引用共享库。添加引用对话框没有显示共享库,所以我尝试了 project.json:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "LinqToTwitter.Shared": "*",
    "LinqToTwitter.Shared.net": "*"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

我尝试了几个版本的组合,但没有得到任何结果。错误消息包含如下内容:

The dependency LinqToTwitter.Shared >= * could not be resolved.

接下来,我打开 *.xproj 并将以下导入粘贴到项目部分:

<Import Project="..\LinqToTwitter.Shared\LinqToTwitter.Shared.projitems"
        Label="Shared" />
<Import 
  Project="..\LinqToTwitter.Shared.net\LinqToTwitter.Shared.net.projitems" 
  Label="Shared" />

这不会在 VS 中显示引用,在元数据中也不会显示任何内容,并且(接下来)无法从引用 .NET 核心应用程序的控制台应用程序中引用任何共享库类型。

如果库在同一个解决方案中,您可以使用 target:project 类似

的方式引用它
{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "LinqToTwitter.Shared": {"target": "project"},
    "LinqToTwitter.Shared.net": {"target": "project"}
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

好消息 - Visual Studio 2017 现在允许 .NET Core 库项目引用共享项目。