TeamCity 上的 Xamarin 表单:Xamarin.Forms 任务与目标不匹配

Posted

技术标签:

【中文标题】TeamCity 上的 Xamarin 表单:Xamarin.Forms 任务与目标不匹配【英文标题】:Xamarin Forms on TeamCity: Xamarin.Forms tasks do not match targets 【发布时间】:2018-06-22 09:48:18 【问题描述】:

我正在 TeamCity 中构建一个 Xamarin Forms 解决方案(包含一个 ios 库、一个 android 库和一个 .NET Standard 库)。

我刚刚升级到 Xamarin Forms 3.1.0.583944。该项目在本地构建没有任何问题,但在我的 TeamCity 构建服务器(Windows Server 2016)上,我一直收到以下错误:

C:\BuildAgent\work\f12265fda07473c1\src\packages\Xamarin.Forms.3.1.0.583944\build\netstandard2.0\Xamarin.Forms.targets(44, 3):错误 XF002:Xamarin.Forms 任务与目标不匹配。请 确保所有项目都引用相同版本的 Xamarin.Forms, 如果错误仍然存​​在,请重新启动 IDE。

我已尝试降级 Xamarin Forms,并重新启动构建代理。这些都没有成功。

更新:出现新错误:

C:\BuildAgent\temp\buildTmp.nuget\packages\xamarin.forms\3.0.0.561731\build\netstandard2.0\Xamarin.Forms.targets(44, 3):错误 XF002:Xamarin.Forms 任务不匹配目标。请确保所有项目引用相同版本的 Xamarin.Forms,如果错误仍然存​​在,请重新启动 IDE。

由于某种原因,代理正在寻找版本 3.0.0.561731。但这不再是项目中的任何地方。我已经删除了整个C:\BuildAgent\temp\buildTmp\.nuget\packages\xamarin.forms\3.0.0.561731 文件夹,但它又回来了。

补充:我注意到每次通过 NuGet 将 Xamarin.Forms 升级到此版本时,都无法卸载旧包,我必须重新启动 Visual Studio 才能完成该过程。这一定会发生。我相当确定这与破坏性构建有关,但这更多是由于推测和经验,而不是具体分析。

【问题讨论】:

如消息所述:确保所有项目都安装了相同版本的 Xamarin.Forms。清理构建代理上可能正在进行的任何缓存也可能是值得的。 我已经检查了构建代理上的包文件夹。只有一个版本。 以前版本的缓存? 还是没有运气。通过工具 -> 选项 -> Nuget 包管理器 -> 清除所有 Nuget 缓存 清除了缓存 我在构建代理上进行了 RDP,打开了 Visual Studio,并构建了项目。它构建没有任何错误。然而,自动构建仍然失败并显示相同的消息。 【参考方案1】:

我发现了如何解决这个问题,但我不清楚为什么它会以它的方式表现出来——在本地,甚至当我 RDP 到构建代理上时,它也能毫无问题地构建,但是当我运行从 TeamCity 控制台构建代理我遇到了这些编译错误。

我的依赖项之一是 NuGet 包,它本身依赖于 Xamarin Forms。幸运的是,我拥有那个 NuGet 包,并且能够将其 Xamarin Forms 版本升级到最新的可用包。如果我没有那个包,我会完全陷入困境——所以这只是部分解决方案。

【讨论】:

这对我很有帮助。不过,我想添加一些额外的注释。【参考方案2】:

上面的答案对我很有帮助。不过,我想添加一些额外的注释。我在使用 Xamarin Forms 3+ 时遇到了这个问题,并且我的本地构建与相同的错误“Xamarin.Forms 任务与目标不匹配。请确保所有项目都引用相同版本的 Xamarin.Forms,并且如果错误仍然存​​在,请重新启动 IDE。”。然后我清除了我的本地 NuGet 缓存并重建了项目,并看到当我执行 NuGet 还原时,还有其他 NuGet 包版本正在为 Xamarin Forms 提取。然后我颠倒了从 Xamarin Forms 开始的 NuGet 包的顺序,一切正常。

【讨论】:

令人惊讶的是,您有时需要跳过多少圈才能让 Xamarin 正常工作。感谢您的信息。

以上是关于TeamCity 上的 Xamarin 表单:Xamarin.Forms 任务与目标不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单上的 Facebook URL 方案

WillEnterForeground 上的 Xamarin 表单更新 ListView

如何解决 Xamarin Android 构建错误 XA4215

禁用 Xamarin 表单输入字段上的复制/粘贴,即条目

Xamarin Android 错误 XA0136 部署错误

Xamarin 表单中 StackLayout 上的动态 TapGestureRecognizer