Azure .NET Core 2服务结构控制台应用程序通用配置文件

Azure .NET Core 2服务结构控制台应用程序通用配置文件,azure,.net-core,azure-service-fabric,Azure,.net Core,Azure Service Fabric,我正试图构建一系列用.NETCore2.1编写的有状态微服务。这些不是ASP.NET应用程序,也没有http接口,而是设计为从服务总线上消费消息的控制台应用程序 我花了很长时间试图弄清楚如何将我的appsettings.json文件引用到服务包中。有很多文章都与在ASP.NET service fabric应用程序中使用appsettings.json文件有关(基本上在webhost builder中进行了详细说明),但这不适用于我,因为我没有使用ASP.NET 我有一个appsettings.

我正试图构建一系列用.NETCore2.1编写的有状态微服务。这些不是ASP.NET应用程序,也没有http接口,而是设计为从服务总线上消费消息的控制台应用程序

我花了很长时间试图弄清楚如何将我的appsettings.json文件引用到服务包中。有很多文章都与在ASP.NET service fabric应用程序中使用appsettings.json文件有关(基本上在webhost builder中进行了详细说明),但这不适用于我,因为我没有使用ASP.NET

我有一个appsettings.json文件,该应用程序中的所有微服务都应该能够使用该文件

我还发现了这篇文章,其中讨论了如何将其放入MSBuild的sfproj目标中,但似乎没有关于目标端的文件结构的任何信息

我尝试将目标添加到我的sfproj文件中,如下所示:

<Target Name="AfterPackage" AfterTargets="Package">
    <Copy SourceFiles="appsettings.json" DestinationFolder="$(PackageLocation)\appsettings.json" />
</Target>

然后在我的服务中,我会尝试基于
。\appsettings.json
实例化一个
IConfiguration
对象,但正如人们现在可能猜测的那样,该服务在尝试发布时抛出一个FileNotFoundException来查找appsettings.json文件,因此,很明显,相对于微服务,文件位于不同的位置。(当然,发布失败只是说出现了问题并回滚,您必须深入SF浏览器才能真正看到该消息)


这个配置应该是什么样的?我找不到任何描述有状态微服务的文件系统的文档,我不清楚应该把这个公共文件放在哪里,或者服务应该如何访问该文件。如果能帮上点忙,我们将不胜感激。

我希望我一切顺利

以下是步骤:

  • appsettings.json
    放入
    *.sfproj
    中的共享文件夹,并使用Visual Studio将其包含在项目中
  • 卸载
    *.sfproj
    并开始将其编辑为
    .xml
  • 在最后一个
    元素之后添加下面的代码
  • 
    
    \u DeployableServiceProjectReference
    是由以前的目标初始化的内部

    对于
    *.sfproj
    中的每个服务引用,这些命令应强制package命令将
    appsettings.json
    文件复制到服务的代码包目录


    希望这有帮助。

    我希望我一切都好

    以下是步骤:

  • appsettings.json
    放入
    *.sfproj
    中的共享文件夹,并使用Visual Studio将其包含在项目中
  • 卸载
    *.sfproj
    并开始将其编辑为
    .xml
  • 在最后一个
    元素之后添加下面的代码
  • 
    
    \u DeployableServiceProjectReference
    是由以前的目标初始化的内部

    对于
    *.sfproj
    中的每个服务引用,这些命令应强制package命令将
    appsettings.json
    文件复制到服务的代码包目录


    希望这有帮助。

    这是
    appsettings.json
    位于某个共享文件夹中还是直接包含在项目中?现在,为了让这件事正常工作,我将它放在每个服务项目的数据文件夹中。。。但我真的希望它作为一个共享位置出现在应用程序项目中。这个
    appsettings.json
    是否位于某个共享文件夹中,或者它直接包含在项目中?现在,为了让它正常工作,我将它放在每个服务项目的一个数据文件夹中。。。但我真的希望它作为一个共享位置出现在应用程序项目中。
    <Target Name="AfterPackage" AfterTargets="Package">
        <Copy SourceFiles="appsettings.json" 
              DestinationFolder="$(PackageLocation)\%(_DeployableServiceProjectReference.ServiceManifestName)\%(_DeployableServiceProjectReference.CodePackageName)" />
    </Target>