2012-02-27 3 views
0

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

Обычай задача в библиотеке 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. я нашел this old post что указывает на проблему была зафиксирована в Mono 2.8. Это также относится к MonoTouch?
  2. Могу ли я использовать функциональность .net 3.5 (в частности System.Xml.Linq) для кодирования пользовательской задачи?

ответ

0

Я нашел это старое сообщение, которое указывает, что проблема была исправлена ​​в 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 (совместимый с Monbuild-совместимым) инструментом.

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

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

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

0

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

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

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

+0

Я использую экспериментальную настройку msbuild, как указано выше, поэтому ваш ответ не применяется. Сама причина этого сообщения (и того, который он ссылается в первом параграфе) заключается в создании рабочей сборки с использованием msbuild и пользовательской задачи. – bright

+0

Кроме того, вышеприведенная ошибка явно указывает, что специальная логика не исчезла. Мы работаем в течение нескольких дней и добились многих успехов в этом, поэтому, пожалуйста, никаких ответов на шаблонные ответы. На этом этапе мы создаем код для создания моноточевого кода. – bright

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