场景:我们想将一些代码移动到一个新的 repo (NewSln),所以我们创建了这个新的 repo,然后将代码作为子模块添加回原始 repo (OldSln)。不得不修改一些引用以指向新版本,但能够使构建在本地工作。
问题:执行此操作后,Azure Devops 构建在 msbuild 构建步骤中失败,原因是
错误:此项目引用此计算机上缺少的 NuGet 包。使用 NuGet 包还原下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105
丢失的文件是..\..\..\packages\Fody.6.5.2\build\Fody.targets
. 和其他类似问题。我们没有对这些引用进行任何更改
我注意到恢复步骤是将包恢复到子模块目录。例如,我看到了这一行
2022-02-10T23:52:45.1474898Z 将包“AcisExtensionSDK.1.0.4.1061”添加到文件夹“C:__w\1\s\NewSln\packages”
我确认此子模块仅由较大的 repo 使用而不是子模块,但它正在恢复\NewSln\packages\
而不是\packages\
到目前为止的调试工作:我可以看到在本地构建中显示为缺失的引用,并且构建在本地工作,对我来说没有什么明显的原因是它在开发操作上失败。我还看到有关相反问题的各种堆栈溢出帖子,其中 nuget restore 不导入子模块 repo 的引用,但我没有发现仅恢复子模块 repo 的情况。
有什么可能导致这种情况吗?将要恢复的包裹路由回适当包裹的方法是什么?