AKKA.NET 使用 .NET Core 框架 net46 配置

AKKA.NET configuration using .NET Core for framework net46

我有点困惑 AKKA.NET 将如何在 .NET Core 应用程序中配置,其中 App.config 已被 project.json 取代。

AKKA.NET 还会寻找 App.Config 吗?或者我应该以某种方式将 HOCON 配置放在 project.json 中?

推荐的做法是什么?

编辑:更多的反复试验证实可以将 App.config 文件添加到 .NET Core 项目并包含一个 hocon 部分,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="akka" type="Akka.Configuration.Hocon.AkkaConfigurationSection, Akka" />
  </configSections>
  <akka>
    <hocon>
    <![CDATA[
        akka {
                actor {
                    serializers {
                      wire = "Akka.Serialization.WireSerializer, Akka.Serialization.Wire"
                    }
                        serialization-bindings {
                        "System.Object" = wire
                        }
                    }
                }
    ]]>
    </hocon>
  </akka>
</configuration>

我仍然想知道推荐的做法是什么。

据我所知,目前没有推荐的做法。当 .NET Core 开始至少有点像稳定的东西时,Akka .NET 将宣布支持 .NET Core 的计划。 Aaron Stannard 在 5 月份写了一篇 blog post 来解释为什么当 .NET Core 团队无法正确设定他们的期望时,他承诺在最后期限前支持 .NET Core 是没有意义的。不过,我不知道从那以后情况是否发生了变化。

更新:Akka.NET 从 2017 年 8 月发布的 Akka.NET v1.3.0 开始支持 .NET Standard 1.6。

在此处查看完整的发行说明:https://github.com/akkadotnet/akka.net/releases/tag/v1.3.0

我真的很难找到一个完整的答案。 但是,我现在有了一个可行的解决方案并想分享。

我想要一些看起来像配置文件的东西(所以 xml)这也有助于 Visual Studio(特别是 VS2019)不知道 hocon 是什么并抱怨。

这是我的 akka-hocon.conf 文件,它位于项目根目录中。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <akka>
    <hocon>
      <![CDATA[          
          akka.persistence{
            ...
          }
      ]]>
    </hocon>
  </akka>
</configuration>

在启动时,我将从 CDATA 中提取的 hocon 传递给 ActorSystem 像这样:

var hoconFile = XElement.Parse(File.ReadAllText(Directory.GetCurrentDirectory() + "\akka-hocon.conf"));
var config = ConfigurationFactory.ParseString(hoconFile.Descendants("hocon").Single().Value);
var actorSystem = ActorSystem.Create("SomeSystemName", config);