2012-02-27 9 views
0

私は(。理由this記事を参照)、中間.csprojファイルを生成するために、カスタムタスクを作成しようとしているMonoTouchで:カスタムMSBuildのタスクエラー

カスタムタスクは、現在参照するDLLです。 net 2.0アセンブリ

実験用msbuild/xbuild MonoDevelopの設定は、MonoDevelopにxbuildを使用してプロジェクトを強制的に実行させるように設定されています。

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

 
    ~/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でのプロジェクトで同じコードがで失敗します。私は<UsingTask>要素を介してタスクを参照するプロジェクトを経由して、コマンドラインから実行することができる午前

質問:私はthis old postを見つけた

  1. 問題があることを示して2.8で修正されました。これはMonoTouchにも当てはまりますか?
  2. カスタムタスクのコーディングに.net 3.5機能(特にSystem.Xml.Linq)を使用できますか?

答えて

0

この問題は、この問題がMono 2.8で修正されたことを示しています。

あなたはその投稿を誤解しました。 MonoDevelop(Monoではない)が2010年9月上旬に修正されたと言われています。の最新バージョンであるMonoDevelopには2.8.xのような修正があります。

Mono 2.8についての注釈は、(元の投稿の質問の)別の要件、つまり.NET 4.0をサポートするランタイムを持っていることです。これは、Mono 2.8(またはそれ以降)を使用している場合にのみ必要です。 MonoTouch用に開発するにはMono 2.10以上が必要ですので、これは問題ではありません。

これはMonoTouchにも当てはまりますか?

MonoTouch自体には適用されません。 MonoDevelopまたは(あなたのケースでは)xbuild(Monoのmsbuild互換)ツールを実行するのに(コンパイラを除いて)製品内で使用されるMonoバージョン(2.10に基づく)は使用しません。

IWO MonoTouchに含まれているMonoの部分は、ツールまたはツールをビルドまたは実行するためではなく、シミュレータまたはデバイスで使用するためのものです。

カスタムタスクのコーディングに.net 3.5機能(特にSystem.Xml.Linq)を使用できますか?

はい。いったん.NET 4.0ランタイムを持っていれば、(GACを介して)System.Xml.Linqを含む新しいアセンブリにアクセスして、msbuildタスクを実行することができます(パスと環境変数が正しく設定されていればMonoDevelop)。

0

MonoDevelopはMonoTouchプロジェクトを構築するのにxbuildを使用するのではなく、MSBuildプロジェクトファイルの必要な部分だけを理解するカスタムコードを作成します。

これは、プロジェクトに追加する特別なMSBuildロジックが検出されなくなることを意味します。

これは将来的に変更される予定ですが、まだ決定されていない(タイムラインはありません)。

+0

上記のように実験用のmsbuild設定を使用しているため、答えは適用されません。この投稿(そして最初のパラグラフで参照されているもの)の理由は、msbuildとカスタムタスクを使用して作業ビルドを作成することです。 – bright

+0

さらに、上記のエラーは、特殊ロジックが検出されていないことを明確に示しています。私たちは何日も働いており、これを達成するために多くの成功を収めましたので、定型的な回答はしないでください。この時点で、私たちはモノトックのビルドコードに深く膝を張っています。 – bright

関連する問題