我正在尝试使用 Visual Studio Team Services(是Visual Studio Online)和 VSTS Build Agent ({{}在我的Mac上构建我的Xamarin.iOS
应用程序{3}})
当我的Xamarin.iOS
项目开始构建时,它开始恢复nuget包,然后出现以下错误的错误:
'MvvmCross.Core'已经有依赖 为'MvvmCross.Platform'定义。 'MvvmCross.Tests'已经定义了依赖关系 'MvvmCross.Platform'。 'MvvmCross.Binding' 已经为'MvvmCross.Core'定义了依赖关系。
我在nuget https://github.com/Microsoft/vsts-agent
上发现了这篇文章表示这可能是由旧的nuget客户造成的。
我mac上的当前nuget客户端是 V2.8.6 所以我使用
升级了nuget客户端nuget update -self
更新为 V3.4.4
但现在我收到了错误:
MSBuild自动检测:使用msbuild版本'4.0' '/Library/Frameworks/Mono.framework/Versions/4.4.0/lib/mono/4.5'。
MsBuild.exe不存在于 '/Library/Frameworks/Mono.framework/Versions/4.4.0/lib/mono/4.5/msbuild.exe'。
这是Nuget / MvvmCross或VSTS代理的错误吗?
答案 0 :(得分:1)
好的,所以我最终为MvvmLight重构 MvvmCross ,现在它可以正常工作。
这不是理想的答案,因为我花了大约2天半时间从我的项目中重构MvvmCross。但是现在代码感觉简单得多,我已经设法摆脱了很多复杂性......
我的自动iOS版本现在可以使用了!
将来我会选择MvvmLight而不是MvvmCross作为Mvvm框架
答案 1 :(得分:1)
您可以将最新版本的Nuget.exe添加到您的存储库,还可以添加一个shell脚本来执行它并在Mac构建服务器上恢复Nuget包。 shell脚本只有一行类似于:
mono nuget / nuget.exe恢复$ 1
$ 1是一个传递给shell脚本的参数,应该指向要为其恢复包的解决方案文件。 nuget / nuget.exe应指向您添加到存储库的nuget还原文件。
然后在VSTS中,而不是使用默认的Nuget还原任务,添加shell脚本任务并将其指向存储库中的shell脚本,参数应指向解决方案文件。
只需确保您的构建服务器也可以找到mono命令。
我写这篇文章更详细地解释了解决方案:
答案 2 :(得分:0)
请尝试按照此链接中的步骤将xamarin的nuget插件更新为2.8.7,而不是将nuget升级到最新版本:Can I update the Nuget.Core.dll used by Xamarin Studio?这应该可以解决您的第一个问题。 Nuget 3在非Windows操作系统上存在一些问题,请查看此页面了解详细信息:NuGet Compatibility