Get Off My Lawn Get Off My Lawn - 4 months ago 17
C# Question

Missing Reference to Assembly

I am trying to Create a socket server, and I am having issues that I am not sure how to fix.

Here is what I am using for my

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"
}
}
}


I then have this basic script
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();

}

}


When I run the following command:

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


I get the following error:


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

Answer

You can't import net45 into netcoreapp1.0, that won't work. When you specify imports, you basically say: "I know those packages claim they are not compatible, but I promise they are".

The package vtortola.WebSocketListener only supports net45, so you won't be able to use it on .Net Core (though you could still use it with dotnet CLI, if you changed your framework to net451).

But there seems to be a beta version of vtortola.WebSocketListener.dnx package, which supports dnxcore50 (previous pre-release version of .Net Core). Importing that (along with portable-net45+win8 for the Microsoft.Tpl.Dataflow dependency) should work. The project.json will then look like this:

{
  "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.