代码之家  ›  专栏  ›  技术社区  ›  Rui Jarimba

运行在Azure DevOps上的生成时未找到assets文件project.assets.json

  •  4
  • Rui Jarimba  · 技术社区  · 7 年前

    我为Azure DevOps上的服务结构解决方案配置了一个构建管道,如下所示:

    Build tasks

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

    C:\Program Files\dotnet\sdk\2.1.200\sdk s\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 任务,但尝试还原的包时出错 SfPRJ 项目:

      `错误:找不到 “…\packages\microsoft.VisualStudio.azure.fabric.msbuild.1.6.7\build\microsoft.VisualStudio.azure.fabric.application.props” 文件。请恢复 'Microsoft.VisualStudio.Azure.Fabric.MSBuild'Nuget包

    知道是什么导致了这个问题吗?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Rui Jarimba    7 年前

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

    我仍然不明白为什么构建开始失败,但是我找到了解决方法。鉴于 包引用 在服务结构项目中尚不支持,我的解决方法是使用 二者都 还原任务如下:

    Build tasks

        2
  •  1
  •   Rob Relyea    7 年前

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

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

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

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

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

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

        3
  •  0
  •   Trevor    7 年前

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

    我有一个主解决方案文件,其中包括 全部的 我的项目,以及一些较小的解决方案文件,其中只有一些项目。主解决方案在AzureDevOps中构建良好,但部分解决方案失败。

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