无法使用单声道加载文件或程序集 System.Net.Http

Posted

技术标签:

【中文标题】无法使用单声道加载文件或程序集 System.Net.Http【英文标题】:Could not load file or assembly System.Net.Http using mono 【发布时间】:2021-12-27 23:03:00 【问题描述】:

我正在用 C# 开发一个不和谐的机器人,为了让它 24/7 全天候运行,我计划将它托管在一个带有单声道的 pi 零中,因为零无法运行网络核心

我正在使用 Visual Studio 2019 使其以 .NET Framework 4.6.2 为目标,编译后我得到一个带有 exe 和一堆 dll 库的 Release 文件夹,然后尝试使用在我的 pi 中运行该程序

mono 'discord bot net framework.exe'

在我的 Windows 10 PC 上它工作正常,但是当我尝试在 pi 上运行它时,我收到以下错误:

未处理的异常:System.TypeLoadException:无法加载类型 字段 'Discord.Net.Rest.DefaultRestClient:_client' (1) 由于:可能 不加载文件或程序集'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其之一 依赖关系。在 Discord.API.DiscordRestApiClient.SetBaseUrl (System.String baseUrl) [0x00011] 在 :0 在 Discord.API.DiscordRestApiClient..ctor (Discord.Net.Rest.RestClientProvider restClientProvider, System.String userAgent, Discord.RetryMode defaultRetryMode, Newtonsoft.Json.JsonSerializer 序列化器,Discord.RateLimitPrecision rateLimitPrecision, System.Boolean useSystemClock) [0x0006a] in :0 在 Discord.API.DiscordSocketApiClient..ctor (Discord.Net.Rest.RestClientProvider restClientProvider, Discord.Net.WebSockets.WebSocketProvider webSocketProvider, System.String userAgent、System.String url、Discord.RetryMode defaultRetryMode,Newtonsoft.Json.JsonSerializer 序列化器, Discord.RateLimitPrecision rateLimitPrecision, System.Boolean useSystemClock) [0x00021] in :0 at Discord.WebSocket.DiscordSocketClient.CreateApiClient (Discord.WebSocket.DiscordSocketConfig 配置) [0x00020] 在 :0 在 Discord.WebSocket.DiscordSocketClient..ctor (Discord.WebSocket.DiscordSocketConfig 配置)[0x00000] 在 :0 在 Not_traso.StartUp.ConfigureServices (Microsoft.Extensions.DependencyInjection.IServiceCollection 服务) [0x00015] 在 :0 处 Not_traso.StartUp.RunAsync() [0x0001e] in :0 在 Not_traso.StartUp.RunAsync (System.String[] args) [0x00065] 在 :0 在 Not_traso.Program.Main (System.String[] args) [0x00060] 在 :0 在 Not_traso.Program。 (System.String[] args) [0x0000c] 在 :0 [错误] 致命未处理 异常:System.TypeLoadException:无法加载字段类型 'Discord.Net.Rest.DefaultRestClient:_client' (1) 由于:不能 加载文件或程序集 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其之一 依赖关系。在 Discord.API.DiscordRestApiClient.SetBaseUrl (System.String baseUrl) [0x00011] 在 :0 在 Discord.API.DiscordRestApiClient..ctor (Discord.Net.Rest.RestClientProvider restClientProvider, System.String userAgent, Discord.RetryMode defaultRetryMode, Newtonsoft.Json.JsonSerializer 序列化器,Discord.RateLimitPrecision rateLimitPrecision, System.Boolean useSystemClock) [0x0006a] in :0 在 Discord.API.DiscordSocketApiClient..ctor (Discord.Net.Rest.RestClientProvider restClientProvider, Discord.Net.WebSockets.WebSocketProvider webSocketProvider, System.String userAgent、System.String url、Discord.RetryMode defaultRetryMode,Newtonsoft.Json.JsonSerializer 序列化器, Discord.RateLimitPrecision rateLimitPrecision, System.Boolean useSystemClock) [0x00021] in :0 at Discord.WebSocket.DiscordSocketClient.CreateApiClient (Discord.WebSocket.DiscordSocketConfig 配置) [0x00020] 在 :0 在 Discord.WebSocket.DiscordSocketClient..ctor (Discord.WebSocket.DiscordSocketConfig 配置)[0x00000] 在 :0 在 Not_traso.StartUp.ConfigureServices (Microsoft.Extensions.DependencyInjection.IServiceCollection 服务) [0x00015] 在 :0 处 Not_traso.StartUp.RunAsync() [0x0001e] in :0 在 Not_traso.StartUp.RunAsync (System.String[] args) [0x00065] 在 :0 在 Not_traso.Program.Main (System.String[] args) [0x00060] 在 :0 在 Not_traso.Program。 (System.String[] args) [0x0000c] 在 :0

我用 sudo apt install mono-complete 安装了单声道并更新到最新版本,

运行 mono --version 给出

Mono JIT 编译器版本 6.12.0.122(压缩包 2021 年 2 月 22 日星期一 17:44:05 UTC) 版权所有 (C) 2002-2014 Novell, Inc、Xamarin Inc 和贡献者。 www.mono-project.com TLS:__thread SIGSEGV:正常 通知:epoll 架构:armel,vfp+hard 已禁用:无 杂项:软调试 口译员:是的 LLVM:是(610) 暂停:抢先 GC:sgen(默认并发)

我尝试使用 NuGet 最新版本和一些以前的版本安装 System.Net.Http,但它不起作用

我以前没有使用过 pi 或 Linux,所以我什至不知道在哪里寻找丢失的库或做什么

【问题讨论】:

【参考方案1】:

结果不和谐网不支持单声道,所以我无能为力,哦,好吧。

【讨论】:

以上是关于无法使用单声道加载文件或程序集 System.Net.Http的主要内容,如果未能解决你的问题,请参考以下文章

System.IO.FileNotFoundException:无法加载文件或程序集System.Xml.Linq

TransformXml 任务通过使用单声道的 Linux 上的 msbuild 失败

将 System.Xml.Linq 与单声道命令行编译器一起使用

无法加载文件或程序集,但已加载

无法加载文件或程序集

寻找解决策略:无法加载文件或程序集[重复]