缺少对程序集的引用

Missing Reference to Assembly

我正在尝试创建套接字服务器,但我遇到了不确定如何解决的问题。

这是我在 project.json 中使用的内容:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    },
    "vtortola.WebSocketListener": "2.2.0.2"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": "net45"
    }
  }
}

然后我有了这个基本脚本 Server.cs:

using System.Net;
using vtortola.WebSockets;

public class Server {

    public static void Main(string[] args){

        var server = new WebSocketListener(new IPEndPoint(IPAddress.Any, 8006));
        var rfc = new vtortola.WebSockets.Rfc6455.WebSocketFactoryRfc6455(server);
        server.Standards.RegisterStandard(rfc);
        server.Start();

    }

}

当我运行以下命令时:

master@ubuntu:~/Documents/Chat$ dotnet run

我收到以下错误:

Project Chat (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling Chat for .NETCoreApp,Version=v1.0
/usr/share/dotnet/dotnet compile-csc @/home/master/Documents/Chat/obj/Debug/netcoreapp1.0/dotnet-compile.rsp returned Exit Code 1
/home/master/Documents/Chat/Server.cs(8,26): error CS0012: The type 'IPEndPoint' is defined in an assembly that is not referenced. You must add a reference to assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
/home/master/Documents/Chat/Server.cs(10,26): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
/home/master/Documents/Chat/Server.cs(11,16): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Compilation failed.
0 Warning(s)
3 Error(s)

Time elapsed 00:00:02.6995789

您无法将 net45 导入 netcoreapp1.0,那是行不通的。当您指定 imports 时,您基本上是说:"I know those packages claim they are not compatible, but I promise they are".

vtortola.WebSocketListener 仅支持 net45,因此您将无法在 .Net Core 上使用它(尽管您仍然可以将它与 dotnet CLI 一起使用,如果您更改了框架至 net451).

但是好像有一个测试版的vtortola.WebSocketListener.dnx包,它支持dnxcore50(.Net Core的先前预发布版本)。导入它(与 Microsoft.Tpl.Dataflow 依赖项的 portable-net45+win8 一起)应该可以工作。 project.json 将如下所示:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    },
    "vtortola.WebSocketListener.dnx": "2.2.0.1-beta-00002"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [ "dnxcore50", "portable-net45+win8" ]
    }
  }
}

It seems vtortola.WebSocketListener will also support RC2 directly in the future.

请将 net451 作为数组元素导入 "import" 部分并插入以下附录 Microsoft.NETCore.Portable.Compatibility: "1.0.1-*