MonoTouch: ошибка пользовательской задачи сборки - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь создать пользовательскую задачу для создания промежуточного файла .csproj (см. эту публикацию по причине.)

Пользовательская задача находится в dll, которая в настоящее время ссылается насборки .net 2.0.

Экспериментальная настройка msbuild / xbuild в MonoDevelop включена, чтобы заставить MonoDevelop использовать xbuild для сборки проекта.

Я могу запуститьэто из командной строки, через проект, который ссылается на задачу через элемент <UsingTask>:

    ~/src/All/workspace/XBuildExt/bin/Debug> mono
    /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/3.5/xbuild.exe
    ../../XBuildExtTest.targets 
    XBuild Engine Version 2.10.8.0
    Mono, Version 2.10.8.0
    Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011.

    Build started 2/27/2012 4:26:15 PM.
    __________________________________________________
    Project "/Users/bright/src/All/workspace/XBuildExt/XBuildExtTest.targets"        
    (default target(s)):
        Target Build:
            It works!
    Done building project
    "/Users/bright/src/All/workspace/XBuildExt/XBuildExtTest.targets".

    Build succeeded.
         0 Warning(s)
         0 Error(s)

Однако тот же код в проекте MonoTouch завершается ошибкой с:

    Error initializing task GenerateMdToolProject: Cannot cast from 
    source type to destination type.
    Task "GenerateMdToolProject" execution -- FAILED

Вопросы:

  1. Я нашел этот старый пост , который указывает, что проблема была исправлена ​​в Mono 2.8.Это также верно для MonoTouch?
  2. Могу ли я использовать функциональность .net 3.5 (в частности System.Xml.Linq) для кодирования пользовательской задачи?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Я нашел этот старый пост, который указывает, что проблема была исправлена ​​в Mono 2.8.

Вы неправильно поняли этот пост.В нем говорится, что это было исправлено в MonoDevelop (не Mono) в начале сентября 2010 года. Поэтому последние версии MonoDevelop , такие как 2.8.x, будут иметь упомянутое вами исправление.

Замечание о Mono 2.8 касается другого требования (первоначального пост-вопроса), то есть наличия среды выполнения, поддерживающей .NET 4.0.У вас будет только это, если вы используете Mono 2.8 (или позже).Разработка для MonoTouch требует Mono 2.10+, так что это не будет проблемой для вас.

Это также верно для MonoTouch?

Это не относится к самому MonoTouch,Версия Mono, используемая внутри продукта (в любом случае основанная на 2.10), не является той, которую вы используете (за исключением компилятора smcs) для запуска MonoDevelop или (в вашем случае) инструмента xbuild (совместимого с msoild для Mono).

IWO части Mono, которые включены в MonoTouch, предназначены для использования на симуляторе или устройстве, а не для сборки или выполнения инструментов.

Могу ли я использовать функциональность .net 3.5 (вКонкретный System.Xml.Linq) для кодирования пользовательской задачи?

Да.Когда у вас будет среда выполнения .NET 4.0, у вас будет (через GAC) доступ к более новым сборкам, включая System.Xml.Linq, для запуска ваших задач msbuild (при условии, что ваши пути и переменные среды установлены правильно, что они, вероятно, еслиможно запустить MonoDevelop).

0 голосов
/ 27 февраля 2012

MonoDevelop не использует xbuild для сборки проекта MonoTouch, но пользовательский код, который понимает только столько, сколько необходимо из файла проекта MSBuild.

Это означает, что любая специальная логика MSBuild, которую вы добавите в проект, останется незамеченной.

Есть планы изменить это в будущем, но пока ничего не решено (и нет графика).

...