1

Cruise Control.Net を実行するビルド サーバーで Nant を 0.86-beta1 から 0.92 にアップグレードしようとしています。現在(サーバーを再起動してからのようです)、<script>タスクが失敗します。古い Nant に戻しても効果はありませんでした。タスクは次のとおりです。

<script language="C#">
    <code>
        <![CDATA[
            public static void ScriptMain(Project project)
            {
                    System.Collections.Generic.SortedDictionary<string, string> sortedByKey = new System.Collections.Generic.SortedDictionary<string, string>();
                    foreach(DictionaryEntry de in project.Properties)
                    {
                            sortedByKey.Add(de.Key.ToString(), de.Value.ToString());
                    } 

                    NAnt.Core.Tasks.EchoTask echo = new NAnt.Core.Tasks.EchoTask();
                    echo.Project = project;
                    foreach(System.Collections.Generic.KeyValuePair<string, string> kvp in sortedByKey)
                    {
                            // Omit the many boring nant.tasks properties
                            if(kvp.Key.StartsWith("nant.tasks"))
                                    continue;

                            echo.Message = String.Format("{0}: {1}", kvp.Key, kvp.Value);
                            echo.Execute();
                    }
            }
        ]]>
    </code>
</script>

これは、デバッグの補助として、定義されたすべてのプロパティの値をエコーするためにどこかからコピーしたスクリプトです。.Net 2.0 (Nant 0.86-beta1 が使用) と .Net 4.0 (Nant 0.92 の場合) の両方にあるべき場所ですが、 NantSortedDictionaryは名前空間に見つからないと文句を言います。System.Collections.Genericそれはアセンブリ System.DLL にあるので、Nant は確実にそれを見つけることができるはずです。

Nant アップグレードを行うために、以前のバージョンの隣のフォルダーに新しいバージョンをインストールし、PATH 変数を変更しました。何らかの理由で、CC.Net サービスを再起動するだけでは、新しいバージョンを使用するのに十分ではありませんでしたが、コンピューターを再起動すると問題が解決しました。しかし、その後、この問題が発生し始めました。PATHを元に戻しても(そしてもう一度再起動しても)修正されませんでした。

4

2 に答える 2

2

それは私には奇妙に聞こえます。

参照と名前空間の部分を<script>タスクのパラメーターに入れてみましたか? 推測だけ...

<script language="C#" >
  <references>
    <include name="System.dll" />
  </references>
  <imports>
    <import namespace="System.Collections.Generic" />
  </imports>
  <code>
    <!-- ... -->
  </code>
</script>
于 2012-08-26T10:33:50.503 に答える
0

ロングショット: .NET 1.1 もインストールされていて、何らかの形でそれを使用している可能性はありますか?

再確認するために、障害のあるスクリプトをコンパイルするスクリプトに置き換えて、そのスクリプトに使用されている .NET フレームワークのバージョンを出力させることはできますか?

実際に編集して、Stackoverflowで同様の問題を抱えた別の質問を見つけました。どうやら、デフォルトでは NAnt は System.dll を参照しません。詳細については、その質問をご覧ください。

于 2012-08-27T19:22:16.227 に答える