Rui*_*mba 8 nuget azure-service-fabric azure-devops azure-pipelines
我在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程序包
关于什么可能导致此问题的任何想法?
小智 8
特雷弗在 2/20 上的评论给了我线索。您可能没有解决方案引用的完整项目集。(ProjectReferences 可能会转到解决方案中没有的其他项目)。
这就是为什么这个疯狂的解决方法(运行 dotnet.exe 和 nuget.exe 恢复任务)起作用的原因:
默认情况下,dotnet restore 将遍历项目引用,以确保它们也被还原。
--no-dependencies开关可以关闭它。
nuget.exe restore 具有相反的默认值,因为我们不想破坏旧用户。
-recursive可以打开这个。
正确的解决方案是让您的解决方案包含所有项目。
-Rob Relyea NuGet 客户团队,工程经理
一些项目使用PackageReference格式,但是.sfproj项目使用packages.config文件。
我仍然不明白为什么构建开始失败,但是我能够找到一种解决方法。鉴于PackageReferenceService Fabric项目尚不支持该解决方案,我的解决方法是按以下方式使用两个还原任务:
我的问题原来是一个没有包括所有必要项目的解决方案。
我有一个包含我所有项目的主解决方案文件,以及一些仅包含部分项目的较小解决方案文件。主解决方案在 Azure DevOps 中构建良好,但部分解决方案失败。
我意识到缺少的 project.assets.json 文件属于需要包含在此失败解决方案中的项目。
| 归档时间: |
|
| 查看次数: |
3799 次 |
| 最近记录: |