【问题标题】:Process terminated. Couldn't find a valid ICU package installed on the system in Asp.Net Core 3 - ubuntu进程终止。在 Asp.Net Core 3 中找不到系统上安装的有效 ICU 包 - ubuntu
【发布时间】:2020-03-25 22:38:38
【问题描述】:

我正在尝试使用dotnet run 命令在 Ubuntu 19.10 直通终端中运行 Asp.Net Core 3 应用程序,但它似乎不起作用。我收到此错误。

进程终止。找不到有效的 ICU 软件包安装在 系统。设置配置标志 System.Globalization.Invariant 如果您想在没有全球化支持的情况下运行,则为 true。在 System.Environment.FailFast(System.String) 在 System.Globalization.GlobalizationMode.GetGlobalizationInvariantMode() 在 System.Globalization.GlobalizationMode..cctor() 在 System.Globalization.CultureData.CreateCultureWithInvariantData()
在 System.Globalization.CultureData.get_Invariant() 在 System.Globalization.CultureInfo..cctor() 在 System.StringComparer..cctor() 在 System.StringComparer.get_OrdinalIgnoreCase() 在 Microsoft.Extensions.Configuration.ConfigurationProvider..ctor() 在 Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource.Build(Microsoft.Extensions.Configuration.IConfigurationBuilder) 在 Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
在 Microsoft.AspNetCore.Hosting.GenericWebHostBuilder..ctor(Microsoft.Extensions.Hosting.IHostBuilder) 在 Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureWebHost(Microsoft.Extensions.Hosting.IHostBuilder, System.Action'1) 在 Microsoft.Extensions.Hosting.GenericHostBuilderExtensions.ConfigureWebHostDefaults(Microsoft.Extensions.Hosting.IHostBuilder, System.Action'1) 在 WebApplication.Program.CreateHostBuilder(System.String[]) 在 WebApplication.Program.Main(System.String[])

我使用 ubuntu 商店安装了 dotnet core sdk,之后我还安装了 Rider IDE。

这里奇怪的是,当我使用 Rider 运行应用程序时,它运行良好,唯一的问题是使用终端 dotnet core 命令。

有人知道可能是什么问题吗?

应用程序是使用 Rider 创建的。我不认为这起到了作用,而只是一个附带事实。

我知道还有其他方法可以在 ubuntu 中安装 dotnet core,但由于 ubuntu 故事中提供了 sdk,我认为它应该可以开箱即用,当然它是一个更简单的选择。

也试过这个one,但似乎对我不起作用。运行命令后仍然会出现同样的问题。

【问题讨论】:

标签: c# asp.net-core


【解决方案1】:

Microsoft documentation 中描述的替代解决方案是在运行您的应用程序之前设置环境变量

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1

【讨论】:

    【解决方案2】:

    如果您想在不支持全球化的情况下运行,您需要将"System.Globalization.Invariant": true 放入您发布的输出AppName.runtimeconfig.json 文件中,如下例所示:

    {
      "runtimeOptions": {
        "tfm": "netcoreapp3.0",
        "configProperties": {
          "System.GC.Server": true,
          "System.Globalization.Invariant": true
        }
      }
    }
    

    您可以在每次部署时手动添加它,方法是添加或更新AppName.runtimeconfig.json 文件。更好的是,将其添加到 runtimeconfig.template.json 文件中,如下所示:

    {
      "configProperties": {
        "System.Globalization.Invariant": true
      }
    }
    
    

    确保runtimeconfig.template.json 包含在构建/发布中。

    【讨论】:

      【解决方案3】:

      似乎libicu63 包将在 Linux 上为 dotnet 提供 ico 支持,至少在 Debian'ish 发行版上是这样。

      更新:

      在进行 Debian 的小型安装时,它似乎“丢失”了(即取消选择安装程序中的所有应用程序/系统选项,除了 SSH 服务器)

      【讨论】:

      • 为我工作!在向我的 Beaglebone 刷新新图像后遇到了这个问题。
      • 也为我工作!!。谢谢@MrCalvin
      • libicu66 似乎已经安装了,我还是这个。 Ubuntu 20
      • 也许您需要更新或更旧的 libicxx 版本?你安装的是什么 dotnet core 版本?
      【解决方案4】:

      是的。在 Debian 中安装 Github 操作时。它也是必需的。

      作为卡尔文先生的回应, sudo apt-get update && sudo apt-get install -qqq libicu63 解决我的问题。

      【讨论】:

        【解决方案5】:

        基于此线程https://github.com/dotnet/core/issues/2186#issuecomment-671105420 在 Ubuntu 20.04 上的技巧

        $export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1

        【讨论】:

          【解决方案6】:

          就我而言,我遵循 Windows documentation 安装 SDK 依赖项和运行时,注意每个 Linux 发行版的对应版本以避免兼容性问题。

          【讨论】:

            猜你喜欢
            • 2022-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-07
            • 2012-11-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多