2016-06-15 2 views
3

Я пытаюсь создать мое приложение Xamarin.iOS на своем Mac с помощью Visual Studio Team Services (была Visual Studio Online) и VSTS сборки агента (https://github.com/Microsoft/vsts-agent)MVVMCross не восстанавливает при запуске восстановления Nuget - Ошибка: MvvmCross.Core 'уже имеет зависимость, определенную для' MvvmCross.Platform

Когда мой 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.

Текущий клиент 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?

+0

Это выглядит как проблема с агентом VSTS. В настоящее время Mono не содержит файл msbuild.exe. Агент VSTS должен искать xbuild.exe в этом месте. –

+0

@MattWard Я попробовал ваше решение, изложенное [здесь] (http://forums.xamarin.com/discussion/comment/147377/#Comment_147377). Как вы думаете, с какой проблемой может быть проблема? Nuget, MvvmCross или Xamarin? – user1

+0

Это не помогло бы. Это не проблема NuGet со второй ошибкой, которую вы видите. Он выглядит как ошибка конфигурации VSTS, поскольку mono не включает msbuild. –

ответ

1

Вы можете добавить последнюю версию Nuget.exe в репозиторий, а также добавить скрипт для его выполнения и восстановления пакетов NuGet на Сервер сборки Mac. Скрипт будет просто строка, подобная:

моно NuGet/nuget.exe восстановить $ 1

$ 1 является параметром, который передается в сценарий оболочки и должен указывать на файл решения вы хотите восстановить пакеты для. nuget/nuget.exe должен указывать на файл восстановления nuget, добавленный в репозиторий.

Затем в VSTS вместо использования задачи восстановления Nuget по умолчанию добавьте задачу сценария оболочки и укажите ее в сценарий оболочки в вашем репозитории, и параметр должен указывать на файл решения.

Просто убедитесь, что ваш сервер сборки также может найти команду mono.

Я написал этот пост, объясняющий решение более подробно:

Xamarin Build Services - Nuget Restore with VSTS

0

Вместо обновления nuget до последней версии попробуйте обновить дополнение nuget для Xamarin до версии 2.8.7, выполнив следующие шаги: Can I update the Nuget.Core.dll used by Xamarin Studio?, который должен исправить вашу первую проблему. NuGet 3 имеет некоторые проблемы на ОС, не Windows, проверьте эту страницу для подробностей: NuGet Compatibility

+0

Я пробовал решение, которое вы опубликовали. Я также попробовал его с помощью «Build Xamarin.ios» и восстановления nuget, указывающего на 'package.config', но не работает. Это проблема с агентом VSTS? – user1

+0

Для получения дополнительной информации .. попытка исправить в первой ссылке дает первую ошибку, указанную в моем Вопросе – user1

1

Ok, так что я в конечном итоге Рефакторинг из MvvmCross для MvvmLight и теперь он работает.

Это не идеальный ответ, так как мне потребовалось около двух с половиной дней, чтобы реорганизовать MvvmCross из моего проекта. Но код теперь намного проще, и мне удалось избавиться от множества сложностей и ...

Моя автоматическая сборка iOS теперь работает!

В будущем я буду собирание MvvmLight над MvvmCross как MVVM Framework

Смежные вопросы