2016-08-02 3 views

答えて

5

アドインはNuGetパッケージとしてパッケージ化された通常の.NETアセンブリです。実際、ほとんどの.NETアセンブリを参照できます。別名は、通常のアセンブリを超えて追加何

  • はケーキスクリプト内でグローバルに利用可能にするケーキのDSLにメソッドを追加します
  • 名前空間をインポート
  • (ステートメントを使用しての必要性のないタイプが利用できるようにすることができます) Cake Coreクラス/機能へのアクセス

最小エイリアス実装は、拡張メソッドで、Cake.Core.ICakeContextにはCake.Core.Annotations.CakeAlias属性。

ので、最小限の実装としては、.NETアセンブリを作成し、Cake.Core nugetパッケージへの参照を追加し、以下のようなクラスを追加します。

public static class HelloWorldAliases 
{ 
     [CakeMethodAlias] 
     public static void HelloWorld(this ICakeContext context) 
     { 
      context.Log.Information("Hello {0}", "World"); 
     } 
} 

エイリアスをテストするには、あなたが経由であなたのアセンブリをロードすることができます#referenceディレクティブまたは#addinディレクティブを使用してパッケージ化した場合は、
HelloWorld()を使用してスクリプト内でエイリアスを呼び出すことができます.Cakeコアエンジンによって自動的に提供されるので、ICakeContextを省略することができます。

例「HelloWorldの」ケーキスクリプト:

#reference "HelloWorld.dll" 
HelloWorld(); 

あなたは自動的にユーザーのためにインポートする任意の名前空間を持っている場合、あなたはあなたの拡張メソッド、例にCakeNamespaceImport属性を使用していることを実行します。

public static class HelloWorldAliases 
{ 
     [CakeMethodAlias] 
     [CakeNamespaceImport("MyNameSpace.Common")] 
     public static void HelloWorld(this ICakeContext context) 
     { 
      context.Log.Information("Hello {0}", "World"); 
     } 
} 

MyNameSpace.Commonのタイプは、using MyNameSpace.Commonをスクリプトに追加することなく利用できるようになりました。

#addin "HelloWorld" 
HelloWorld(); 

あなたのアドインをパッケージ化し、nugetし、公開したら

、あなたは#addinディレクティブ、例を使用してパッケージIDでそれを参照することができます

関連する問題