我正试图弄清楚为什么NuGet没有下载正确版本的Microsoft.AspNet.SignalR.Client
。为了尽可能容易理解,以下是我的项目:
- 一个WPF项目,目标是.NET 4.6
- 一个UWP项目,根据新项目对话框以.NET 4.6为目标
- 类库(可移植)项目,根据"Targets"属性,以
.NET 4.6
和Windows Universal 10.0
为目标
所有3个项目都有NuGet包Microsoft.AspNet.SignalR.Client
,WPF和UWP项目都有可用的类Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport
。如果我将WPF项目中创建的类复制到UWP项目中,它会找到所有引用,并且不会给我任何错误;但是,如果我尝试对类库执行同样的操作,它将无法找到WebSocketTransport类。
如果类库项目与UWP项目有相同的目标,为什么WebSocketTransport类不可用?
类库(可移植)项目.json:
{
"supports":
{
"net46.app": {},
"uwp.10.0.app": {}
},
"dependencies": {
"Microsoft.AspNet.SignalR.Client": "2.2.0",
"Microsoft.NETCore": "5.0.0",
"Microsoft.NETCore.Portable.Compatibility": "1.0.0"
},
"frameworks": {
"dotnet": {
"imports": "portable-net452+win81"
}
}
}
通用Windows项目.json:
{
"dependencies":
{
"Microsoft.AspNet.SignalR.Client": "2.2.0",
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
},
"frameworks":
{
"uap10.0": {}
},
"runtimes":
{
"win10-arm": {},
"win10-arm-aot": {},
"win10-x86": {},
"win10-x86-aot": {},
"win10-x64": {},
"win10-x64-aot": {}
}
}
有什么方法可以让类库项目下载包含WebSocketTransport方法的NuGet包吗?我需要使用的SignalR集线器只允许WebSockets。
我能够通过使用AutoTransport类"破解"这一问题,该类在联系集线器时似乎正确选择了WebSockets传输,否则它将无法连接:
await connection.Start(new AutoTransport(new DefaultHttpClient()));