【发布时间】:2020-10-02 20:49:32
【问题描述】:
这基本上是这个问题的副本,但存储库已存档,所以我不能在那里问它: https://github.com/aspnet/SignalR/issues/1645
我正在尝试让运行 .NET Framework 的较旧应用程序连接到使用 SignalR 运行 .NET Core 的较新应用程序。 我读过一些帖子说 SignalR 的 AspNetCore 和 AspNet 版本不兼容,因此目标是让 Microsoft.AspNetCore.SignalR.Client 在 .NET Framework 应用程序上运行。 p>
我已经使用框架版本 4.6.1 制作了一个测试项目,我相信它是 .NET Standard 2.0,所以我应该能够根据 davidfowl 的评论安装这个包https://www.nuget.org/packages/Microsoft.AspNetCore.SignalR.Client/1.0.0-preview1-final 我无法在我的 4.6.1 项目上安装这个包,所以我一定是做错了什么。
我还尝试了另一种解决方法,即使用 Microsoft.AspNetCore.SignalR.Client v3.1.6 代码创建 netstandard2.0 库,然后从我的 4.6.1 项目中引用 .dll。
我的 netstandard2.0 库中的 3.1.6 代码如下所示:
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Concurrent;
public class SignalRConnection
{
private readonly HubConnection hubConnection;
public SignalRConnection(string endpoint)
{
this.endpoint = endpoint;
hubConnection = new HubConnectionBuilder()
.WithUrl(endpoint)
.Build();
}
}
我通过转到我的 4.6.1 项目中的引用来引用它,右键单击并按添加引用并选择我的 netstandard2.0 项目。 我调用它的 4.6.1 代码是:
class Program
{
static void Main(string[] args)
{
SignalRConnection connection = new SignalRConnection("http://localhost:8080/status");
}
}
我认为这可能是因为我没有使用 1.0.0,所以我也尝试了该版本。我得到相同的异常 FileNotFoundException 但对于每个不同的版本。
System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.AspNetCore.SignalR.Client.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The system cannot find the file specified.'
有没有人有幸使用 SignalR 将 .NET Framework 应用程序连接到 .NET Core 应用程序,并且可以给我一些关于哪里出错的指示?谢谢
编辑:
我能够使用 VS 2019 将其安装到 4.6.1 项目中,但是当我尝试将其安装到 VS 2015 中的 4.6.1 项目中时,它给了我上述错误
【问题讨论】:
-
您应该没问题,只需在 .NET 4.6.1 项目中添加对 nuget.org/packages/Microsoft.AspNetCore.SignalR.Client/3.1.8 的引用即可。如果失败,请发布确切的错误消息。请注意,您可能需要转到 .NET 4.7.2(甚至不再支持 .NET 4.6.1,没有理由使用它)
-
.NET 4.6.1 并不是真正的 .NET 标准。您应该真正使用 .NET Framework 4.7.2 或 4.8。
-
@CamiloTerevinto 感谢您的回复。我能够在 VS 2019 中将此包安装到 4.6.1 项目中,但是当我在 VS 2015 中创建 4.6.1 项目时,我仍然无法安装此包(我已经编辑了我的问题以显示错误)跨度>
-
@craigbot 查看您的 MSBuild 输出日志。我敢打赌,
Microsoft.AspNetCore.SignalR.Client的 NuGet 包不包含您项目的程序集。 NuGet 目前存在一个重大设计缺陷,当您安装一个未向目标项目添加任何程序集引用依赖项的包时,它不会阻止您(甚至警告您!)。 -
@Dai 很抱歉不明白,你的意思是在我的 VS 2019 项目中吗?在 VS 中构建时如何检查 MSBuild 日志?我用客户端进行了测试,它实际上在 2019 版本中做了我想要的(使用 SignalRConnection 类创建并连接到我的集线器),你认为还会有问题吗?
标签: c# asp.net asp.net-core signalr