【发布时间】:2019-05-01 19:30:07
【问题描述】:
我在 Azure DevOps 上为 Service Fabric 解决方案配置了一个构建管道,如下所示:
直到几天前,在特定构建代理(私有)上构建开始失败时,一切都很好,出现以下错误(对于一些项目):
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 包
对可能导致此问题的原因有任何想法吗?
【问题讨论】:
-
您是否有一个合适的
.tfignore/.gitignore(取决于您用于源代码管理的)排除了bin、obj和packages文件夹?您能否确认这些文件夹不在源代码管理中? -
根文件夹中有一个
.gitignore文件。我相信它是 Visual Studio 的默认设置,并做了一些小改动。是的,bin、obj和**/packages/*(nuget) 有规则 -
是否有人覆盖了
.gitignore并意外将其提交到源代码管理? -
@DanielMann 你的意思是 nuget 包?不,软件包不受源代码控制。
-
我知道 nuget 需要恢复依赖图中的每个项目。我相信在 Visual Studio 中构建解决方案不会构建或恢复不在解决方案中的项目,即使解决方案中的项目有对其的项目引用,但我不知道 msbuild 是否有相同的限制。我怀疑是的,因为 Visual Studio 在幕后大量使用 MSBuild。如果您遇到这种情况,这是一个已知问题/设计使然。但它没有回答为什么行为会发生变化。
标签: nuget azure-devops azure-service-fabric azure-pipelines