Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET Tizen和Signal_C#_.net_.net Core_Signalr_Tizen - Fatal编程技术网

C# .NET Tizen和Signal

C# .NET Tizen和Signal,c#,.net,.net-core,signalr,tizen,C#,.net,.net Core,Signalr,Tizen,我正在使用.NETCore和Xamarin()构建一个Tizen应用程序(.NETTizen4.0) 除了一件事,一切都很好。无法启动到集线器的信号器(Microsoft.AspNetCore.signar.Client(5.0.7))连接。创建新的HubConnectionBuilder后,将立即引发以下异常: System.IO.FileLoadException:无法加载文件或程序集“System.Threading.Tasks.Extensions,Version=4.2.0.1,Cul

我正在使用.NETCore和Xamarin()构建一个Tizen应用程序(
.NETTizen4.0

除了一件事,一切都很好。无法启动到集线器的信号器(
Microsoft.AspNetCore.signar.Client(5.0.7)
)连接。创建新的HubConnectionBuilder后,将立即引发以下异常:

System.IO.FileLoadException:无法加载文件或程序集“System.Threading.Tasks.Extensions,Version=4.2.0.1,Culture=neutral,PublicKeyToken=CC7B13FFCD2DD51”。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)

这是最奇怪的部分。我什么也不做,这个异常就改变了。例如,如果我拿起一杯饮料,回来再次运行它,就会丢失另一个程序集。目前,我看到缺少
System.Threading.Tasks.Extensions,Version=4.2.0.1
Microsoft.Extensions.DependencyInjection.Abstractions,Version=5.0.0
。最重要的是:我不主动使用这两个包中的任何一个

所以基本上,只要我删除下面这行代码,一切都正常

this.hub=new-HubConnectionBuilder().WithUrl($“wss://{Settings.Instance.ServerAddress}/deviceHub”).Build();

我已经尝试添加丢失的包,但没有成功。问题是,由于一些非常奇怪的原因,在signar.Client包中找不到这些包(我猜是这样)。我还尝试了删除signar.Client、重建项目、从VisualStudio卸载Tizen、更新所有软件包,甚至卸载了VisualStudio。我真的在这上面浪费了我最后的3天,没有任何进展。可能有人对此有一个解决方案,或者有某种解决方法。

错误可能是由于Tizen设备上臭名昭著的程序集版本不匹配问题造成的

说明:Tizen 4.0设备预装了4.1.1.0版本的
System.Threading.Tasks.Extensions.dll
程序集,但最新的Microsoft.AspNetCore.signar.Client nuget包依赖于4.2.1.0版本的
System.Threading.Tasks.Extensions.dll
。因此,应用程序将中断,因为运行时主机总是首先解析预安装的程序集。(同一个应用程序在Tizen 5.5设备上运行时不会出现问题,因为预装的程序集版本是4.3.1.0。)但是,我不确定为什么
Microsoft.Extensions.DependencyInjection.Abstracts.dll无法解决,因为它不是.NET Core运行时的一部分,也不是Tizen设备预装的

简而言之,您可以在应用程序的Main()中添加以下事件处理程序,并检查问题是否仍然存在

static void Main(字符串[]args)
{
AppDomain.CurrentDomain.AssemblyResolve+=(对象s,ResolveEventArgs eventArgs)=>
{
var appDir=Path.GetDirectoryName(typeof(App.Assembly.Location));
var assemblyName=eventArgs.Name.Split(',')[0];
var assemblyPath=Path.Combine(appDir,assemblyName+“.dll”);
返回文件.Exists(assemblyPath)?Assembly.LoadFile(assemblyPath):null;
};
..
应用程序运行(args);
}
请确保
http://tizen.org/metadata/prefer_dotnet_aot应用此更改时,未在
tizen manifest.xml
中设置元数据值。如果已设置,则需要将
assemblyPath
更改为类似于
Path.Combine(appDir,.native\u image,.assemblyName+“.ni.dll”)


如果这不能纠正您的错误,请告诉我。

非常感谢您!这7行代码工作起来很神奇。复制和粘贴,它只是工作!我期待类似的东西,但对我来说,默认行为没有任何意义,因为该应用程序已经交付了新版本<现在还可以找到code>Microsoft.Extensions.DependencyInjection.Abstractions.dll
。我认为它是随机显示的,因为这种奇怪的行为,因为,正如你所说,它不是.NETCore的一部分。你是对的。这没有任何意义。在台式机上,运行时主机(.NET CLI)在启动应用程序之前使用.deps.json文件解析依赖程序集,但由于性能原因,在Tizen上不可能这样做(真可惜)-运行时在启动请求到达之前初始化,甚至预取一些预安装的程序集。我在很久以前向运行时团队请求了一个修复程序,但是没有一个好的解决方案适用于所有可能的情况。无论如何,我很抱歉浪费了你宝贵的时间。