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

问题描述 投票:7回答:3

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

Build tasks

一切都很好,直到几天前构建开始在特定构建代理(私有)上失败,出现以下错误(对于一些项目):

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包

有什么可能导致这个问题的想法?

nuget azure-devops azure-service-fabric azure-pipelines
3个回答
4
投票

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

我仍然不明白为什么构建开始失败,但我能找到一个解决方法。鉴于Service Fabric项目尚不支持PackageReference,我的解决方法是使用两个还原任务,如下所示:

Build tasks


1
投票

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

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

dotnet restore将默认执行项目引用,以确保它们也可以恢复。 --no-dependencies开关可以关闭它。

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

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

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


0
投票

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

我有一个主解决方案文件,其中包括我的所有项目,以及一些只包含部分项目的小型解决方案文件。主解决方案在Azure DevOps中构建得很好,但部分解决方案失败了。

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

© www.soinside.com 2019 - 2024. All rights reserved.