Service Fabric部署错误:服务缺少ServiceManifest.xml



我在我的解决方案中添加了一个无状态服务结构项目,并将其设置为Web Api自主机。我没有修改Visual Studio添加的任何文件。唯一有点小问题的是解决方案文件上的Git合并错误,导致我不得不再次手动添加项目。

项目命名如下:

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

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

中的应用程序的BuildLayoutC: SfDevCluster ImageBuilderProxy AppType ClientCore.CommandStackApi.DeployType数据是无效的。service缺少ServiceManifest.xmlClientCore.CommandStackApiPkg .

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

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

我猜如果我删除所有项目并重新设置一切,它会起作用,但这也发生在早些时候,当我试图从MSDN指南构建部署包和powershell脚本时,所以我真的很想深入了解我可能做错了什么。如果这发生在一个更成熟的项目中,我将无法选择从头开始重新创建解决方案并利用Visual Studio黑盒魔法设置,这必须在幕后完成。

如果有什么问题,欢迎指教。

我终于知道是怎么回事了。

我正在查看文件和项目依赖项,但是错过了一个缺失的服务依赖项。当两个项目通过合并从解决方案中移除时,SF项目一定已经丢失了服务引用。

当我将现有的Service Fabric项目(.csproj)添加到Service项目(.sfproj)时,我必须在ApplicationPackageRootApplicationManifest.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>

我添加了移除和添加服务项目的依赖到fabric项目,它工作了

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

表示servicemanifestapplicationmanifest更新失败。applicationmanifest必须与ServicemanifestRef的文件名一致

对于我来说,文件名中放错的下划线(由于重命名)是分隔符。

检查ApplicationManifest.xml中的/ApplicationManifest/ServiceManifestImport/ServiceManifestRef/@ServiceManifestName属性的值与ServiceManifest.xml中的/ServiceManifest/@Name属性的值是否完全匹配

最新更新