2016-08-26 41 views
5

我已将无状态服务架构项目添加到我的解决方案中,并将其设置为Web Api自身主机。 我没有接触任何由Visual Studio添加的文件。唯一出错的是解决方案文件上的Git合并错误,导致我不得不手动添加项目。服务架构部署错误:服务缺少ServiceManifest.xml

项目命名如下:

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

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

The BuildLayout of the application in C:\SfDevCluster\Data\ImageBuilderProxy\AppType\ClientCore.CommandStackApi.DeployType is invalid. ServiceManifest.xml is missing for service ClientCore.CommandStackApiPkg.

当我比较文件,并且所有pr oject设置我可以考虑,我的其他Service Fabric项目一切看起来不错,但它一直抱怨Service Manifest缺失。我注意到的唯一的事情是SF项目缺少对CommandStackApi项目的依赖,但这并没有改变任何东西。其中最后

我试过在两个不同的计算机上,有一个新的安装服务织物SDK等

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

+0

一些MSDN文档如何建立一个包就在这里https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-package-apps(我发现这很有用) –

回答

7

所以我终于明白了什么是错的。

我在查看文件和项目依赖项,但错过了缺失的服务依赖项。当两个项目通过合并从解决方案中移除时,SF项目必须丢失服务参考。在修复问题时重新加入这一点。

+0

这正是我发生的事情。这种情况的麻烦在于,错误信息不会让你知道什么是错的。 –

0

当我将一个现有的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>