我正在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才能完成此过程。这确实发生了。我相当确定这与突破的构建有关,但这更多是由于推测和经验,而不是具体分析。
答案 0 :(得分:1)
我找到了解决问题的方法,但是我不清楚为什么它会以这种方式表现出来-在本地,甚至当我RDP到构建代理时,它都可以毫无问题地进行构建,但是当我运行从TeamCity控制台构建代理,我遇到了这些编译错误。
我的依赖项之一是NuGet程序包,它本身对Xamarin Forms有依赖性。幸运的是,我拥有该NuGet软件包,并且能够将其Xamarin Forms版本升级到最新的可用软件包。如果我不拥有该软件包,那我将被完全卡住-所以这只是部分解决方案。
答案 1 :(得分:1)
以上答案对我很有帮助。我想添加一些其他注释。当我使用Xamarin Forms 3+时,我遇到了这个问题,而我的本地版本确实与同一错误“ Xamarin.Forms任务与目标不匹配。请确保所有项目都引用相同版本的Xamarin.Forms,并且如果错误仍然存在,请重新启动IDE。”。然后,我清除了本地的NuGet缓存并重建了项目,并发现当我执行NuGet还原时,还为Xamarin Forms提取了其他NuGet软件包版本。然后,我从Xamarin Forms开始颠倒了NuGet软件包的顺序,并且一切正常。