构建新的 Azure Fabric 服务时未找到清单文件

Posted

技术标签:

【中文标题】构建新的 Azure Fabric 服务时未找到清单文件【英文标题】:Manifest File Not Found while Building New Azure Fabric Service 【发布时间】:2017-03-17 14:37:42 【问题描述】:

我们有一个使用 Visual Studio 2015 创建的 Microsoft Azure Service Fabric 应用程序。该解决方案已经包含许多项目和服务——一些作为后端代码,另一些作为提供 Web 方法的 Web API 服务。我正在尝试添加一个新的 Web API 服务(称为 ReportingSvcWebApi,在一个名为 ReportingService.WebApi 的项目中实现)。我在结构的ApplicationManifest.xml 文件中添加了对服务的正确引用。我已经验证,如果我在本地构建和调试,我可以 ping ReportingSvcWebApi 服务,使用 Postman 创建一个 Web 请求,该请求调用我创建的控制器中的一种方法并获得正确的响应。因此,该服务似乎已正确集成到我们的结构中。

但是,当我签入我的更改并在团队资源管理器中启动构建时,我收到一个错误:

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets (4875): Could not copy the file "E:\[PATH-TO-OUR-SOLUTION-ON-THE-BULID-SERVER]\Binaries\ReportingService.WebApi\ReportingSvc.WebApi.exe.manifest" because it was not found.

请注意,ReportingSvc.WebApi.exe 是我在项目属性中设置的ReportingService.WebApi 项目的输出程序集的名称。它也是在报告服务的ServiceManifest.xml 文件的CodePackage/EntryPoint/ExeHost/Program 标记中设置的值。此外,在构建日志中,在错误发生之前,我可以看到许多目标在解决方案中的所有项目上运行并成功,包括报告服务(“默认目标”、GetNativeManifestGetCopyToOutputDirectoryItems)。在执行报告服务的 Publish 目标期间似乎发生了故障。

我看到其他人报告缺少 .exe.manifest 文件错误,但从未报告过 Service Fabric 服务。此外,我之前设法将另一个服务(ASP.NET Core MVC 服务)添加到我们的 Service Fabric 解决方案中,而没有遇到此问题。最后,除了我认为与错误无关的 ApplicationManifest.xml 和 ServiceManifest.xml 文件之外,我在我们的任何项目中都找不到任何关于清单的提及。我是否需要在某处设置一个选项来为我的项目生成 .exe.manifest 文件,或者阻止 MSBuild 查找它?

【问题讨论】:

【参考方案1】:

我通过在文本编辑器中打开服务的 .csproj 文件并在其他 <PropertyGroup> 元素旁边添加以下内容来解决此问题:

<PropertyGroup> 
    <GenerateManifests>true</GenerateManifests> 
</PropertyGroup>

解决方案中的其他预先存在的项目没有此元素,但仍然可以正常构建。我不确定为什么在这种情况下这是必要的。

【讨论】:

以上是关于构建新的 Azure Fabric 服务时未找到清单文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure DevOps 部署具有不同名称的 Service Fabric 服务

Service Fabric Actor 订阅 Azure 服务总线主题

Azure Service Fabric 使用情况

Azure Service Fabric部署 - 该地区不提供虚拟机来为您的请求提供服务

Service Fabric 运行时未从 Actor 服务实例回收未使用的内存

从Fabric迁移到Firebase时未提供Google App ID或Google服务文件