【问题标题】:Service Fabric Deployment Error: ServiceManifest.xml is missing for serviceService Fabric 部署错误:服务缺少 ServiceManifest.xml
【发布时间】:2020-06-25 16:24:38
【问题描述】:

我已在我的解决方案中添加了一个 Stateless Service Fabric 项目并将其设置为 Web Api 自托管。 我在 Visual Studio 添加的任何文件中都没有触及任何内容。唯一稍微出错的是解决方案文件上的 Git 合并错误,导致我不得不再次手动添加项目。

项目名称如下:

  • 项目名称/sfproj:ClientCore.CommandStackApi.Deploy
  • 服务名称/csproj:ClientCore.CommandStackApi

当我尝试部署时,我收到以下错误:

应用程序的BuildLayout在 C:\SfDevCluster\Data\ImageBuilderProxy\AppType\ClientCore.CommandStackApi.DeployType 是无效的。服务缺少 ServiceManifest.xml ClientCore.CommandStackApiPkg。

当我比较文件和我能想到的所有项目设置时,我的其他 Service Fabric 项目看起来一切正常,但它一直抱怨缺少服务清单。我唯一注意到的是 SF 项目缺少对 CommandStackApi 项目的依赖,但这并没有改变任何东西。

我在两台不同的计算机上进行了尝试,其中最后一台安装了 Service Fabric SDK 等。

我猜如果我删除所有项目并重新设置所有内容,它会起作用,但这也发生在早些时候,当我尝试完全从 MSDN 指南构建部署包和 powershell 脚本时,所以我真的想要一些洞察我可能做错了什么。如果这发生在一个更成熟的项目中,我将无法从头开始重新创建解决方案并利用 Visual Studio 黑盒魔术设置,它必须在幕后进行。任何想法,可能是错误的,将不胜感激。

【问题讨论】:

标签: azure-service-fabric


【解决方案1】:

所以我终于弄清楚出了什么问题。

我正在查看文件和项目依赖项,但错过了缺少的服务依赖项。当两个项目通过合并从解决方案中删除时,SF 项目肯定丢失了服务引用。添加这个解决了这个问题。

【讨论】:

  • 这正是发生在我身上的事情。这种情况的问题在于,错误消息不会让您知道发生了什么问题。
  • 这里没有说明他是如何找到缺失依赖项的
  • @l--''''''------''''''''''''' 我不确定你的意思。现在已经有一段时间了,但如果我没记错的话,Service Fabric 项目有两种类型的依赖项。普通代码依赖项/引用,然后是服务依赖项,Visual Studio 使用它来生成一些文件,如服务清单。就我而言,我缺少服务依赖项。
【解决方案2】:

当我将现有 Service Fabric 项目 (.csproj) 添加到服务项目 (.sfproj) 时,我必须在 \ApplicationPackageRoot\ApplicationManifest.xml 文件中手动创建两个部分。

例子:

<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="Sample.Service.Commander" ServiceManifestVersion="1.0.0" />
  <ConfigOverrides>
    <ConfigOverride Name="Config">
      <Settings>
        <Section Name="EndpointConfigSection">
          <Parameter Name="UseDifferentPorts" Value="[StatelessServices_UseDifferentPorts]" />
        </Section>
      </Settings>
    </ConfigOverride>
  </ConfigOverrides>
  <Policies>
    <EndpointBindingPolicy EndpointRef="OwinEndpoint" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint0" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint1" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint2" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint3" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint4" CertificateRef="ClusterCert" />
  </Policies>
</ServiceManifestImport>

<Service Name="Commander">
  <StatelessService ServiceTypeName="CommanderType" InstanceCount="[MyService_InstanceCount]">
    <SingletonPartition />
  </StatelessService>
</Service>

【讨论】:

    【解决方案3】:

    我将服务项目的已删除和添加依赖项添加到结构项目中并且它起作用了。

    【讨论】:

      【解决方案4】:

      更改服务名称时也会出现此错误。

      servicemanifestapplicationmanifest 更新失败时。 applicationmanifest 必须是 ServicemanifestRef 的确切文件名。

      对我来说,文件名中放错位置的下划线(由于重命名)是断路器。

      【讨论】:

        猜你喜欢
        • 2018-07-21
        • 2016-12-07
        • 2019-12-04
        • 2018-04-27
        • 2016-10-27
        • 2019-05-31
        • 2018-03-13
        • 2019-10-28
        • 2018-10-05
        相关资源
        最近更新 更多