我正在尝试使用 Visual Studio Team Services(以前是 Visual Studio Online) 和 VSTS Build Agent< 在 Mac 上构建 Xamarin.iOS
应用程序 ( https://github.com/Microsoft/vsts-agent )
当我的 Xamarin.iOS
项目开始构建时,它开始恢复 nuget 包,然后出现以下错误:
'MvvmCross.Core' already has a dependency defined for 'MvvmCross.Platform'. 'MvvmCross.Tests' already has a dependency defined for 'MvvmCross.Platform'. 'MvvmCross.Binding' already has a dependency defined for 'MvvmCross.Core'.
我在 nuget 上找到了这篇文章 Error installing MvvmCross.HotTuna.MvvmCrossLibraries v4.0.0-beta1 in Xamarin Studio
其中说这可能是由旧的 nuget 客户端引起的。
我的Mac上当前的nuget客户端是V2.8.6,所以我使用升级了nuget客户端
nuget update -self
已更新至V3.4.4
但现在我收到错误:
MSBuild auto-detection: using msbuild version '4.0' from '/Library/Frameworks/Mono.framework/Versions/4.4.0/lib/mono/4.5'.
MsBuild.exe does not exist at '/Library/Frameworks/Mono.framework/Versions/4.4.0/lib/mono/4.5/msbuild.exe'.
这是 Nuget/MvvmCross 或 VSTS 代理的错误吗?
最佳答案
您可以将最新版本的 Nuget.exe 添加到存储库,还可以添加 shell 脚本来执行它并在 Mac 构建服务器上恢复 Nuget 包。 shell 脚本只有一行类似于:
mono nuget/nuget.exe 恢复 $1
$1 是传递给 shell 脚本的参数,应指向要为其恢复包的解决方案文件。 nuget/nuget.exe 应指向您添加到存储库的 nuget 恢复文件。
然后在 VSTS 中,不要使用默认的 Nuget 恢复任务,而是添加一个 shell 脚本任务并将其指向存储库中的 shell 脚本,并且参数应指向解决方案文件。
只需确保您的构建服务器也可以找到 mono 命令。
我写了这篇文章,更详细地解释了该解决方案:
关于xamarin - 运行 Nuget 恢复时,MVVMCross 无法恢复 - 错误 : MvvmCross. Core' 已具有为“MvvmCross.Platform”定义的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838587/