web-dev-qa-db-ja.com

Azure Devopsでビルドを実行するときにアセットファイルproject.assets.jsonが見つかりません

次のような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)の1つです。

奇妙なことは、一部のエージェントで実行するとビルドが失敗するが、他のエージェントではビルドがうまくいくことです

いくつかの詳細:

  • 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
Rui Jarimba

一部のプロジェクトはPackageReference形式を使用しますが、.sfprojプロジェクトはpackages.configファイル。

ビルドが失敗し始めた理由はまだわかりませんが、回避策を見つけることができました。 PackageReferenceはService Fabricプロジェクトでまだサポートされていないので、次善策としてboth復元タスクを使用しました。

Build tasks

4
Rui Jarimba

2/20に関するTrevorのコメントは、私にヒントを与えてくれました。ソリューションによって参照されるプロジェクトの完全なセットがない可能性があります。 (ProjectReferencesは、ソリューションに含まれていない他のプロジェクトに移動する場合があります)。

このクレイジーな回避策(dotnet.exeとnuget.exeの復元タスクを実行)が機能した理由は次のとおりです。

dotnet restoreは、デフォルトでプロジェクト参照をウォークして、それらも復元されるようにします。 --no-dependenciesスイッチはそれをオフにすることができます。

古いユーザーを壊したくなかったため、nuget.exeの復元には反対のデフォルトがあります。 -recursiveはこれをオンにすることができます。

適切なソリューションは、ソリューションにすべてのプロジェクトを含めることです。

-Rob Relyea NuGetクライアントチーム、エンジニアリングマネージャー

3
Rob Relyea

私の問題は、必要なすべてのプロジェクトを含まない解決策であることが判明しました。

all自分のプロジェクトを含むマスターソリューションファイルと、一部のプロジェクトのみを含む多数の小さなソリューションファイルがあります。マスターソリューションはAzure DevOpsで正常に構築されましたが、部分的なソリューションは失敗しました。

見つからないproject.assets.jsonファイルは、この失敗したソリューションに含める必要があるプロジェクトに属していることに気付きました。

2
Trevor