【问题标题】:Copying DotNet Core Application to image store in Service Fabric is taking a long time将 DotNet Core 应用程序复制到 Service Fabric 中的图像存储需要很长时间
【发布时间】:2018-12-04 20:45:00
【问题描述】:

我的服务结构应用程序(所有 .net core 2.1 应用程序)由 14 个服务组成。在我的 VSTS 构建中的打包过程之后,我注意到每个服务大约 100mb,每个服务总共提供 1.4GB(ish)。

这样做的后果是,在复制包文件时,需要很长时间! “Copying application to image store...”发布阶段大约需要 10 分钟。

查看包似乎包含 .net core 2.1 框架程序集,我想这就是每个服务包如此之大的原因。

打包过程是否必须包含.net core 2.1框架组件?有没有办法在没有 .net 核心框架的情况下打包它,如果我这样做了,有没有办法在服务结构集群的所有虚拟机上安装 .net 框架,并保持该框架是最新的?

【问题讨论】:

    标签: .net-core azure-service-fabric azure-pipelines-release-pipeline


    【解决方案1】:

    请参阅repo,了解如何跳过将运行时包含在包中。我们对包含 32 个 .Net Core 2.0 服务的应用程序使用了非常相似的方法,这将我们的包大小从 ~2.5 GB 减少到 ~600MB。

    然而,这意味着我们需要在每个 SF 节点上手动安装运行时(.Net Core 和 ASP.Net Core)。如果有人知道如何自动化该部分,我对此也很感兴趣。

    【讨论】:

    • 是的,我目前正在尝试在规模集上安装运行时,尝试使用:“az vmss 扩展集”,但无法为 .net 核心提供有效的脚本。 (我宁愿不手动去每台机器)
    • 您是否使用 VSTS 来构建您的应用程序?如果是这样,您是如何修改打包步骤以打包为 FDD 的?
    • 是的,我们使用 VSTS 进行构建和部署。我们在构建定义中没有做任何特别的事情来让它工作。重要的部分是编辑您的 .csproj 文件以使用 x64 并删除 元素。对于演员,您必须设置 False(或完全远程)。在 servicemanifest.xml 中,我们有 SFServiceEntryPoint.cmdMyService.dll
    • 这可以将 IL 链接器与 SF 一起使用吗? github.com/dotnet/announcements/issues/30
    【解决方案2】:

    我们有类似的情况,当尝试将包上传到图像存储时,部署具有许多微服务的 Service Fabric 应用程序超时。

    对于 .net core 2.2,您可以部署 framework dependent executable (FDE),它将 .net 运行时从您的输出文件夹中剥离。它的行为与 .net 完整框架可执行文件的工作方式完全相同。 TL;DR; 执行以下操作:

    • 在 csproj 中添加 <SelfContained>True</SelfContained>(或者如果您通过 dotnet publish 发布,请使用 --self-contained false 标志

    额外的优化是利用目标清单文件进行依赖。在runtime package store 文档中了解更多信息。
    这可用于从您的服务中删除 SwashBuckle (10 MB) 依赖项,并将其部署在目标环境中。

    对于 Service Fabric Actor 项目,正如 @morten-fischer-madsen 在上述任一 cmets 中所建议的那样,您需要:

    • 在你的csproj中设置<UpdateServiceFabricManifestEnabled>False</UpdateServiceFabricManifestEnabled>或者删除它,否则构建会因为Microsoft.ServiceFabric.Actorsnuget而失败 例如
    The command "dotnet "obj\\FabActUtilTemp\FabActUtil.dll" /spp:"PackageRoot" /t:manifest /sp:"Actor1" /in:"bin\Debug\netcoreapp2.2\win7-x64\\Actor1.dll" /arp:"C:\Users\%username%\source\repos\Application1\Actor1\bin\Debug\netcoreapp2.2\win7-x64\\" " exited with code -2147450745.
    Actor1
    C:\Users\%username%\.nuget\packages\microsoft.servicefabric.actors\3.3.654\build\netcoreapp2.0\Microsoft.ServiceFabric.Actors.targets
    22
    

    我为此here打开了一个错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 2017-11-24
      • 2019-07-29
      • 2013-08-13
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      相关资源
      最近更新 更多