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

时间:2018-11-29 16:57:54

标签: nuget azure-devops azure-service-fabric azure-pipelines

我在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程序包

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

3 个答案:

答案 0 :(得分:3)

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

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

Build tasks

答案 1 :(得分:1)

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

这是这种疯狂的解决方法(运行dotnet.exe和nuget.exe还原任务)起作用的原因:

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

nuget.exe恢复的默认设置与之相反,因为我们不想破坏旧用户。 -recursive可以启用它。

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

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

答案 2 :(得分:0)

我的问题原来是一个解决方案,其中未包含所有必需的项目。

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

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