Azure service fabric 服务结构部署错误:服务缺少ServiceManifest.xml

Azure service fabric 服务结构部署错误:服务缺少ServiceManifest.xml,azure-service-fabric,Azure Service Fabric,我已将无状态服务结构项目添加到解决方案中,并将其设置为Web Api自宿主。 在VisualStudio添加的任何文件中,我都没有涉及任何内容。唯一稍微出错的是解决方案文件上的Git合并错误,导致我不得不再次手动添加项目 项目名称如下: 项目名称/sfproj:ClientCore.CommandStackApi.Deploy 服务名称/csproj:ClientCore.CommandStackApi 当我尝试部署时,出现以下错误: 中应用程序的BuildLayout C:\SfDevCl

我已将无状态服务结构项目添加到解决方案中,并将其设置为Web Api自宿主。 在VisualStudio添加的任何文件中,我都没有涉及任何内容。唯一稍微出错的是解决方案文件上的Git合并错误,导致我不得不再次手动添加项目

项目名称如下:

  • 项目名称/sfproj:ClientCore.CommandStackApi.Deploy
  • 服务名称/csproj:ClientCore.CommandStackApi
当我尝试部署时,出现以下错误:

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

当我将文件和我能想到的所有项目设置与我的其他ServiceFabric项目进行比较时,一切看起来都很好,但它总是抱怨缺少服务清单。我注意到的唯一一件事是SF项目缺少对CommandStackApi项目的依赖,但这并没有改变任何事情

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


我猜如果我删除所有项目并重新设置所有内容,它会起作用,但这也发生在早些时候,当时我试图完全按照MSDN指南构建部署包和powershell脚本,因此我非常希望了解我可能做错了什么。如果这种情况发生在一个更成熟的项目上,我将无法选择从头开始重新创建解决方案并进入VisualStudio blackbox magic设置,这必须在幕后进行。任何可能出错的想法都将受到欢迎。

因此我最终找出了问题所在


我查看了文件和项目依赖项,但遗漏了一个缺少的服务依赖项。当合并将这两个项目从解决方案中删除时,SF项目一定丢失了服务引用。将此添加回解决了问题。

当我将现有的Service Fabric项目(.csproj)添加到Service项目(.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>



我将服务项目的依赖项添加到fabric项目中,并将其删除和添加到fabric项目中,并且成功了。

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

servicemanifest
applicationmanifest
更新失败时。
applicationmanifest
必须
ServicemanifestRef
准确的文件名


对我来说,文件名中的下划线放错了位置(由于重命名)是破坏者。

这里有一些关于如何构建包的MSDN文档(我发现这很有用),这正是发生在我身上的事情。这种情况的问题是,错误消息没有给你任何关于什么是错误的线索。这里没有任何迹象表明他是如何找到丢失的文件的dependency@l--我不明白你的意思。已经有一段时间了,但如果我没记错的话,一个服务结构项目有两种类型的依赖关系。Visual Studio用于生成某些文件(如服务清单)的普通代码依赖项/引用,然后是服务依赖项。在我的例子中,我缺少一个服务依赖项。
<Service Name="Commander">
  <StatelessService ServiceTypeName="CommanderType" InstanceCount="[MyService_InstanceCount]">
    <SingletonPartition />
  </StatelessService>
</Service>