在Azure Devops上运行构建时找不到资产文件project.assets.json

Rui*_*mba 8 nuget azure-service-fabric azure-devops azure-pipelines

我在Azure DevOps上为Service Fabric解决方案配置了一个构建管道,如下所示:

构建任务

直到几天前,当某个特定的构建代理(专用)上的构建开始失败时,一切都很好,并出现以下错误(对于一些项目):

C:\ Program Files \ dotnet \ sdk \ 2.1.200 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.PackageDependencyResolution.targets(327,5):错误:资产文件'F:\ Agent03 \ w \ 84 \ s找不到\ src \ MyProject.Sam.Tiles.Domain \ obj \ project.assets.json'。运行NuGet软件包还原以生成此文件。

失败的任务是Build solution $(PathToSolution)一项。

奇怪的是,当在某些代理上运行时构建失败,但是对于其他代理,构建很好。

一些细节:

  • Use NuGet 4.x我认为,这项任务是最近开始使用NuGet v4.9.1的。我尝试使用v4.8.1没有运气;
  • 大多数项目使用PackageReference格式,但是.sfproj项目使用packages.config文件
  • 我尝试使用该dotnet restore任务,但尝试恢复该.sfproj项目的软件包时出现错误:

    错误:无法找到.. \ packages \ Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7 \ build \ Microsoft.VisualStudio.Azure.Fabric.Application.props文件。请还原'Microsoft.VisualStudio.Azure.Fabric.MSBuild'Nuget程序包

关于什么可能导致此问题的任何想法?

小智 8

特雷弗在 2/20 上的评论给了我线索。您可能没有解决方案引用的完整项目集。(ProjectReferences 可能会转到解决方案中没有的其他项目)。

这就是为什么这个疯狂的解决方法(运行 dotnet.exe 和 nuget.exe 恢复任务)起作用的原因:

默认情况下,dotnet restore 将遍历项目引用,以确保它们也被还原。 --no-dependencies开关可以关闭它。

nuget.exe restore 具有相反的默认值,因为我们不想破坏旧用户。 -recursive可以打开这个。

正确的解决方案是让您的解决方案包含所有项目。

-Rob Relyea NuGet 客户团队,工程经理


Rui*_*mba 5

一些项目使用PackageReference格式,但是.sfproj项目使用packages.config文件。

我仍然不明白为什么构建开始失败,但是我能够找到一种解决方法。鉴于PackageReferenceService Fabric项目尚不支持该解决方案,我的解决方法是按以下方式使用两个还原任务:

构建任务


Tre*_*ice 5

我的问题原来是一个没有包括所有必要项目的解决方案。

我有一个包含我所有项目的主解决方案文件,以及一些仅包含部分项目的较小解决方案文件。主解决方案在 Azure DevOps 中构建良好,但部分解决方案失败。

我意识到缺少的 project.assets.json 文件属于需要包含在此失败解决方案中的项目。