运行 在 Azure Devops 上构建时找不到资产文件 project.assets.json
Assets file project.assets.json not found when running a build on Azure Devops
我在 Azure DevOps 上为 Service Fabric 解决方案配置了一个构建管道,如下所示:
一切都很好,直到几天前构建开始在特定构建代理(私有)上失败,并出现以下错误(对于一些项目):
C:\Program Files\dotnet\sdk.1.200\Sdks\Microsoft.NET.Sdk\build\Microsoft.PackageDependencyResolution.targets(327,5): Error : Assets file 'F:\Agent03\w\s\src\MyProject.Sam.Tiles.Domain\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.
失败的任务是 Build solution $(PathToSolution)
一个。
奇怪的是,在某些代理上 运行 构建失败,但在其他代理上构建正常。
一些细节:
Use NuGet 4.x
任务最近开始使用 NuGet v4.9.1,我想。我尝试使用 v4.8.1 但没有成功;
- 大部分项目使用
PackageReference
格式,但.sfproj
项目使用packages.config
文件
- 我尝试使用
dotnet restore
任务,但在尝试恢复 .sfproj
项目的包时出现错误:
`Error : Unable to find the
'....\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props'
file. Please restore the
'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package
知道可能导致此问题的原因吗?
一些项目使用 PackageReference
格式,但 .sfproj
项目使用 packages.config
文件。
我仍然不明白为什么构建开始失败,但我找到了解决方法。鉴于 Service Fabric 项目尚不支持 PackageReference
,我的解决方法是使用 both 恢复任务,如下所示:
我的问题原来是一个没有包含所有必要项目的解决方案。
我有一个包含 所有 我的项目的主解决方案文件,以及一些仅包含部分项目的较小的解决方案文件。主解决方案在 Azure DevOps 中构建良好,但部分解决方案失败。
我意识到丢失的 project.assets.json 文件属于需要包含在此失败解决方案中的项目。
Trevor 对 2/20 的评论给了我线索。您可能没有解决方案引用的完整项目集。 (ProjectReferences 可能会转到其他项目,这些项目不在解决方案中)。
这就是为什么这个疯狂的解决方法(运行 dotnet.exe 和 nuget.exe 恢复任务)起作用的原因:
默认情况下,dotnet restore 将遍历项目引用以确保它们也被还原。
--no-dependencies
开关可以关闭它。
nuget.exe restore 有相反的默认值,因为我们不想破坏老用户。
-recursive
可以打开它。
正确的解决方案是使您的解决方案包含所有项目。
-Rob Relyea
NuGet 客户端团队,工程经理
我在 Azure DevOps 上为 Service Fabric 解决方案配置了一个构建管道,如下所示:
一切都很好,直到几天前构建开始在特定构建代理(私有)上失败,并出现以下错误(对于一些项目):
C:\Program Files\dotnet\sdk.1.200\Sdks\Microsoft.NET.Sdk\build\Microsoft.PackageDependencyResolution.targets(327,5): Error : Assets file 'F:\Agent03\w\s\src\MyProject.Sam.Tiles.Domain\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.
失败的任务是 Build solution $(PathToSolution)
一个。
奇怪的是,在某些代理上 运行 构建失败,但在其他代理上构建正常。
一些细节:
Use NuGet 4.x
任务最近开始使用 NuGet v4.9.1,我想。我尝试使用 v4.8.1 但没有成功;- 大部分项目使用
PackageReference
格式,但.sfproj
项目使用packages.config
文件 - 我尝试使用
dotnet restore
任务,但在尝试恢复.sfproj
项目的包时出现错误:`Error : Unable to find the '....\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package
知道可能导致此问题的原因吗?
一些项目使用 PackageReference
格式,但 .sfproj
项目使用 packages.config
文件。
我仍然不明白为什么构建开始失败,但我找到了解决方法。鉴于 Service Fabric 项目尚不支持 PackageReference
,我的解决方法是使用 both 恢复任务,如下所示:
我的问题原来是一个没有包含所有必要项目的解决方案。
我有一个包含 所有 我的项目的主解决方案文件,以及一些仅包含部分项目的较小的解决方案文件。主解决方案在 Azure DevOps 中构建良好,但部分解决方案失败。
我意识到丢失的 project.assets.json 文件属于需要包含在此失败解决方案中的项目。
Trevor 对 2/20 的评论给了我线索。您可能没有解决方案引用的完整项目集。 (ProjectReferences 可能会转到其他项目,这些项目不在解决方案中)。
这就是为什么这个疯狂的解决方法(运行 dotnet.exe 和 nuget.exe 恢复任务)起作用的原因:
默认情况下,dotnet restore 将遍历项目引用以确保它们也被还原。
--no-dependencies
开关可以关闭它。
nuget.exe restore 有相反的默认值,因为我们不想破坏老用户。
-recursive
可以打开它。
正确的解决方案是使您的解决方案包含所有项目。
-Rob Relyea NuGet 客户端团队,工程经理