MVVMCross在运行Nuget还原时不会恢复 - 错误:MvvmCross.Core'已经为'MvvmCross.Platform

时间:2016-06-15 14:40:45

标签: xamarin xamarin.ios nuget mvvmcross azure-devops

我正在尝试使用 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代理的错误吗?

3 个答案:

答案 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命令。

我写这篇文章更详细地解释了解决方案:

Xamarin Build Services - Nuget Restore with VSTS

答案 2 :(得分:0)

请尝试按照此链接中的步骤将xamarin的nuget插件更新为2.8.7,而不是将nuget升级到最新版本:Can I update the Nuget.Core.dll used by Xamarin Studio?这应该可以解决您的第一个问题。 Nuget 3在非Windows操作系统上存在一些问题,请查看此页面了解详细信息:NuGet Compatibility