Nuget 在Azure Devops上运行生成时未找到资产文件project.Assets.json
我为Azure DevOps上的Service Fabric解决方案配置了构建管道,如下所示: 一切都很好,直到几天前,当构建开始在特定构建代理(private)上失败时,出现以下错误(对于一些项目): 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包还原以生成此文件 失败的任务是Nuget 在Azure Devops上运行生成时未找到资产文件project.Assets.json,nuget,azure-devops,azure-service-fabric,azure-pipelines,Nuget,Azure Devops,Azure Service Fabric,Azure Pipelines,我为Azure DevOps上的Service Fabric解决方案配置了构建管道,如下所示: 一切都很好,直到几天前,当构建开始在特定构建代理(private)上失败时,出现以下错误(对于一些项目): C:\Program Files\dotnet\sdk\2.1.200\Sdks\Microsoft.NET.sdk\build\Microsoft.PackageDependencyResolution.targets(327,5):错误:找不到资产文件'F:\Agent03\w\84\s\
生成解决方案$(PathToSolution)
一个
奇怪的是,在某些代理上运行时,构建失败,但在其他代理上,构建正常
一些细节:
我想,这个任务最近开始使用NuGet v4.9.1。我尝试使用v4.8.1,但运气不佳李>使用NuGet 4.x
- 大多数项目使用
格式,但是PackageReference
项目使用.sfproj
文件packages.config
- 我尝试使用
任务,但尝试还原dotnet restore
项目的包时出错: `错误:找不到目标 “....\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props” 文件请恢复 “Microsoft.VisualStudio.Azure.Fabric.MSBuild”Nuget软件包.sfproj
知道是什么导致了这个问题吗?一些项目使用
PackageReference
格式,但是.sfproj
项目使用packages.config
文件
我仍然不明白为什么构建开始失败,但我找到了解决办法。鉴于Service Fabric项目中尚不支持PackageReference
,我的解决方法是使用两个恢复任务,如下所示:
我的问题原来是一个没有包括所有必要项目的解决方案 我有一个主解决方案文件,其中包括所有我的项目,还有一些较小的解决方案文件,其中只有一些项目。主解决方案在Azure DevOps中构建良好,但部分解决方案失败
我意识到丢失的project.assets.json文件属于一个需要包含在这个失败的解决方案中的项目。Trevor在2月20日的评论为我提供了线索。您可能没有解决方案引用的完整项目集。(ProjectReference可能会转到解决方案中不包含的其他项目) 这就是为什么这种疯狂的解决方法(运行dotnet.exe和nuget.exe还原任务)奏效的原因: 默认情况下,dotnetrestore将遍历项目引用,以确保它们也被还原。
--任何依赖项
开关都无法关闭该功能
nuget.exe restore具有相反的默认值,因为我们不想破坏旧用户。
-recursive
可以启用此功能
正确的解决方案是使您的解决方案包含所有项目
-罗布·雷耶
NuGet客户团队、工程经理您是否有适当的
.tfignore
/.gitignore
(取决于您用于源代码管理的源代码)来排除bin
、obj
和包
文件夹?能否确认这些文件夹不在源代码管理中?根文件夹中有一个.gitignore
文件。我相信它是VisualStudio的默认版本,有一些minro更改。是的,bin
、obj
和**/packages/*
(nuget)有规则有人覆盖了.gitignore
并意外地将它们提交到源代码管理吗?@DanielMann你是说nuget包吗?不,包不受源代码管理。我知道nuget需要恢复依赖关系图中的每个项目。我相信在VisualStudio中构建解决方案不会构建或恢复不在解决方案中的项目,即使解决方案中的项目具有对它的项目引用,但我不知道msbuild是否具有相同的限制。我怀疑是的,因为VisualStudio在幕后大量使用MSBuild。如果你遇到这种情况,这是一个已知的问题。但是,它没有回答为什么行为会发生变化。NuGet restore应该足够了,因为它同时适用于PackageReference
和packages.config
。如果没有,可能会有问题。如果您能将问题提交给