Azure devops Azure DevOps Service Fabric Guest.Net Core 3.1 API exe的构建管道在创建包时失败

Azure devops Azure DevOps Service Fabric Guest.Net Core 3.1 API exe的构建管道在创建包时失败,azure-devops,azure-pipelines,azure-service-fabric,asp.net-core-3.1,Azure Devops,Azure Pipelines,Azure Service Fabric,Asp.net Core 3.1,我有一个.NET Core 3.1 API,我正试图使用Azure DevOps构建管道将其部署为Service Fabric中的来宾可执行文件。所有项目/配置的平台均为x64 我已经在本地测试了该API,并且在本地测试了作为服务结构中的来宾可执行文件运行的API。我能够构建/重建API,并且能够打包service fabric应用程序 在我的构建管道中,我有以下步骤,如下图所示 创建服务结构包的定义如下图所示 生成管道运行时,始终会失败,并出现以下错误: ##[错误]evaluationS

我有一个.NET Core 3.1 API,我正试图使用Azure DevOps构建管道将其部署为Service Fabric中的来宾可执行文件。所有项目/配置的平台均为x64

我已经在本地测试了该API,并且在本地测试了作为服务结构中的来宾可执行文件运行的API。我能够构建/重建API,并且能够打包service fabric应用程序

在我的构建管道中,我有以下步骤,如下图所示

创建服务结构包的定义如下图所示

生成管道运行时,始终会失败,并出现以下错误:

##[错误]evaluationStatusUpdatesContainer\evaluationStatusUpdatesContainer.sfproj(0,0):错误MSB4057:项目中不存在目标“包”

我找不到关于如何解决这个问题的任何文档,我花了几天时间尝试。有人知道如何让它工作吗

编辑1

sfproj如下所示


ffefa7ed-cf72-4780-9910-816DEED24F
2.5
1.5
1.6.10
v4.8
调试
x64
释放
x64
ApplicationPackageRoot\EvaluationStatusUpdatesContainerPKG\Code\%(递归目录)%(文件名)%(扩展名)

这将导致以下例外情况:


##[错误]C:\Program Files(x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(777,5):错误:未为项目“EvaluationStatusUpdatesContainer.sfproj”设置OutputPath属性。请检查以确保为此项目指定了有效的配置和平台组合。配置='Release'平台='x64'。您可能会看到此消息,因为您试图在没有解决方案文件的情况下构建项目,并且为此项目指定了不存在的非默认配置或平台。

我的service fabric存储库中有一个自定义Powershell脚本。 它为.sfproj执行单独的nuget还原

脚本restore-sf.ps1:

Push-Location $PSScriptRoot
$ProjectFolder = "..\src\YourProjectFolder"

$PackageFolder = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot "..\Packages"))

Push-Location $ProjectFolder

nuget restore YourServiceFabricProject.sfproj -PackagesDirectory $PackageFolder -MSBuildVersion 15

Pop-Location
Pop-Location
我的文件夹结构:

├───Root
    ├───packages
    ├───src
        ├───YourProjectFolder
            ├───YourServiceFabricProject.sfproj  
    ├───scripts
        ├───restore-sf.ps1

根据文件夹结构,您需要更改脚本中的路径

在管道中,第一步是调用脚本,以还原Microsoft.VisualStudio.Azure.Fabric.MSBuild

脚本假定路径中有可用的
nuget

Azure DevOps Service Fabric Guest.Net Core 3.1 API exe的构建管道在创建包时失败

根据错误:

MSB4057:项目中不存在目标“包”

将MSBuild用于具有目标包的项目(.sln)的解决方案时,但并非所有项目都定义了包任务。这可能是您出现此错误的原因之一

要解决此问题,我们可以在
.sfproj
文件中添加以下自定义目标:

  <Target Name="ForcePackageTarget" AfterTargets="Build" Condition="'$(ForcePackageTarget)' =='true'">
    <CallTarget Targets="Package"/>
  </Target>

然后将
/p:ForcePackageTarget=true
作为参数添加到msbuild生成任务中


请查看和了解更多详细信息。

您可以添加您的
sfproj
文件以查看您在那里定义了哪些目标吗?@KrzysztofMadej感谢您的回复-我在帖子中添加了sfproj文件作为编辑。问题如何?下面的答案解决了您的问题吗?如果没有,请告诉我有关此问题的最新信息好吗?@LeoLiu MSFT我已经花了至少8个小时试图找到OutputPath问题的解决方案,但没有任何效果。虽然这个项目不是我的主要任务,但在我的组织中有一个使用MuleSoft for API的推动力,并且通过Azure DevOps部署到ServiceFabric的困难使它看起来像是一个更好的替代方案