2016-08-26 39 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>