即使“ MYAPPLICATION.ServiceFabricPkg”已更改,也无法升级Service Fabric服务

时间:2018-08-02 16:30:44

标签: c# azure-service-fabric

我已经在Service Fabric应用程序中增加了其中一项服务的版本。

但是,当我尝试升级群集时,出现以下错误:

The content in CodePackage Name:Code and Version:1.0.0 in Service Manifest 
3>'MYAPPLICATION.ServiceFabricPkg' has changed, but the version number is the same.
3>At C:\Program Files\Microsoft SDKs\Service 
3>Fabric\Tools\PSModule\ServiceFabricSDK\Publish-UpgradedServiceFabricApplication.ps1:135 char:38

对我来说,这是一个很大的问题,因为Service Fabric的最畅销点之一是能够更新一项服务而又不影响其他服务。

有人知道解决方案吗?

研究指出与压缩有关的错误,所以我添加了

<CopyPackageParameters CompressPackage="false" />

到我的Local5Node.xml文件。

这没什么区别。

我正在尝试通过在Visual Studio 2017中发布来做到这一点。

欢呼

保罗

2 个答案:

答案 0 :(得分:1)

之所以会这样,是因为您已经更新了服务二进制文件,并且没有用新的版本号更新清单,清单与以前一样指向相同的版本,但是二进制文件是不同的。

Service Fabric使用清单版本来识别在应用程序升级期间应更新哪些服务,因为您没有设置新版本并且二进制文件已更改,它将回滚以避免出现问题。

对此错误进行快速搜索会返回一些结果,并说明其原因,请查看以下答案:

Error while upgrading Azure Service Fabric through VSTS CI/CD

Deployment for Service Fabric service version upgrade fails on VSTS Release

Differential packaging

答案 1 :(得分:0)

我认为在更新服务代码,在ServiceManifest.xml中更新代码版本但未在ApplicationManifest.xml中更新应用程序版本时,您可能会遇到问题。

以下是将服务从1.0.0版本更新到1.1.0的示例。

手动方法

ServiceManifest.xml

  1. 更新代码包的版本。
<CodePackage Name="Code" Version="1.1.0" />
  1. 更新服务清单的版本。
<ServiceManifest Name="ServicePkg" Version="1.1.0" />

ApplicationManifest.xml

  1. 服务清单参考的更新版本。
<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="ServicePkg" ServiceManifestVersion="1.1.0" />
  <ConfigOverrides />
</ServiceManifestImport>
  1. 更新应用程序类型的版本
<ApplicationManifest ApplicationTypeName="AppType" ApplicationTypeVersion="1.1.0" />

Visual Studio方法

  1. 选择Service Fabric应用程序项目,然后右键单击
  2. 选择“编辑清单版本...”
  3. 选中“自动更新应用程序和服务版本”
  4. 在您喜欢的服务中更改“代码”的版本。

希望这会有所帮助。