linux - 依赖System.Net.Http.WinHttpHandler的库能否部署到Linux

标签 linux cross-platform .net-core nuget-package .net-standard

我正在考虑使用 Consul library for .NET支持NETSTANDARD1.3。当我添加包时,我看到它取决于 System.Net.Http.WinHttpHandler ,它又添加了 win32 原语包。

我找不到任何文档说明这些包如何在 Linux 上工作。我假设它们不会工作,但它们可能会提供垫片层。

有人对这些包有任何经验吗?

编辑:

作为独立部署部署到 Ubuntu 会产生以下结果。

未处理的异常:System.TypeInitializationException:“System.Net.Http.CurlHandler”的类型初始值设定项引发异常。 ---> System.TypeInitializationException: 'Http' 的类型初始值设定项抛出异常。 ---> System.TypeInitializationException:“HttpInitializer”的类型初始值设定项抛出异常。 ---> System.DllNotFoundException: 无法加载 DLL 'System.Net.Http.Native': 找不到指定的模块。 (HRESULT 异常:0x8007007E) 在 Interop.HttpInitializer.EnsureCurlIsInitialized() 在 Interop.HttpInitializer..cctor() --- 内部异常堆栈跟踪结束 --- 在 Interop.HttpInitializer.Initialize() 在 Interop.Http..cctor() --- 内部异常堆栈跟踪结束 --- 在 Interop.Http.GetSupportedFeatures() 在 System.Net.Http.CurlHandler..cctor() --- 内部异常堆栈跟踪结束 --- 在 System.Net.Http.CurlHandler..ctor() 在 Consul.ConsulClient.ConsulClientConfigurationContainer..ctor() 在 Consul.ConsulClient..ctor(Action`1 configOverride,Action`1 clientOverride,Action`1 handlerOverride) 在 REstateScratchPad.Program.Main(String[] args) 中止(核心转储)

最佳答案

我认为您不需要安装 SDK,因为我能够让它正常工作。您使用的是哪个版本的 Ubuntu?您是否遵循了 https://learn.microsoft.com/en-us/dotnet/articles/core/deploying/ 中详述的步骤? (下面还有详细说明)?

我这样说是因为我构建了一个测试应用程序,它在根本没有安装 SDK 的情况下也能正常工作:

  1. 根据上述指南编辑您的 project.json 并删除 "platform": true。添加一个 runtimes:{} 元素,对我来说是: “运行时”:{ “win81-x64”:{}, “ubuntu.14.04-x64”:{} }

  2. 在我这样做之后,我能够进行 dotnet restoredotnet build -r ubuntu.14.04-x64 工作,但只掉了 3目录中的文件,没有 SDK 无法运行。

  3. 我做了 dotnet publish -c release -r ubuntu.14.04-x64 并启动了一个运行 Ubuntu 14.04 的 Vagrant box,apt-get install libunwind8,然后运行我的程序:/vagrant/bin/release/netcoreapp1.0/ubuntu.14.04-x64/publish/ConsoleApp1。该程序所做的只是位于 Consul.NET project 的 README.md 中的示例函数。 ,并且在我在 VM 中启动 Consul 副本后,它能够正确打印“Hello Consul”。

关于linux - 依赖System.Net.Http.WinHttpHandler的库能否部署到Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472536/

相关文章:

linux - BASH Loop 同时运行命令

linux - sftp 上传 bash 忽略文件

c++ - 跨平台 C++ 高精度事件定时器实现

java - 需要帮助将 c# 加密转换为 java (android) 加密以实现交叉兼容性

c# - 增量 Nuget 包版本 NetStandard 本地文件夹 visual studio 2017

linux - GZIP 不适用于压缩多个文件

json - 如何过滤位于 [ 和 ] 内的零件?

c# - GUI、跨平台、C# 和 OpenGL。是否可以?

c# - 避免太多查询类型和在单个类中表示它们的突变 - Hot Chocolate 13.2 (GraphQL)

c# - .NET 6 在 Web API 项目 Controller 中使用 HTTP 客户端进行 API 调用