在部署Service Fabric Cluster时,我遇到了以下问题。
Connect-ServiceFabricCluster:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B) 在 XXYYZZ(脚本路径):62 char:2 + Connect-ServiceFabricCluster @ConnectionParams + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [Connect-ServiceFabricCluster],BadImageFormatException + FullyQualifiedErrorId:CreateClusterConnectionErrorId,Microsoft.ServiceFabric.Powershell.ConnectCluster
当我们安装了所需的模块时,Actuall它运行得很好
https://www.microsoft.com/en-in/download/details.aspx?id=30679
http://www.microsoft.com/web/handlers/webpi.ashx?command=getinstallerredirect&appid=MicrosoftAzure-ServiceFabric-CoreSDK
但我们希望从系统安装服务结构集群,其中系统没有所需的Service Fabric组件(在上面的组件中)。现在我们通过将dll放在特定文件夹中并使用名为Import Module的命令,通过Import-Module命令加载这些组件/ modules / dll。我可以知道,我该如何解决这个问题。
答案 0 :(得分:4)
我正在做同样的事情,并且不想在我们的构建系统上安装Service Fabric SDK。经过一些反复试验后,我终于做对了: 我已将必要的Service Fabric Tools和SDK文件放入源代码控制中,在构建期间检查这些工具,然后在调用Connect-ServiceFabricCluster之前从两者中导入PowerShell模块。我意识到将二进制文件和相关文件放入VCS并不是一个很好的解决方案:将来我很乐意使用像Artifactory这样的东西。
这是解决方案的详细信息。
首先,将必要的工具放入VCS:
第二步:将工具添加到构建
第三:在PowerShell脚本中导入工具和SDK模块(我假设Service Fabric工具和SDK位于相对于当前工作目录的ServiceFabric子文件夹中):
Import-Module ServiceFabric\Tools\Microsoft.ServiceFabric.Powershell.dll
Import-Module ServiceFabric\SDK\ServiceFabricSDK.psm1
以下是最后的想法: 我使用64位版本的Windows 7,我们所有的构建机器都是64位。老实说,我不知道是否存在32位版本的Service Fabric SDK和工具。无论如何,您需要确保使用的是64位版本的PowerShell。我们使用TeamCity,并明确将Powershell运行模式Bitness设置为x64。
Service Fabric项目附带的Deploy-FabricApplication.ps1脚本尝试通过读取SDK路径的注册表项然后调用Import-Module来加载Service Fabric SDK模块。由于构建机器没有安装SDK,我还将此脚本的修改副本添加到VCS,注释掉读取注册表并加载模块的行,然后使用-UseExisingClusterConnection参数。