私は自分のaddinをCakeにDSLを拡張するために作成しています。ドキュメントは少し欠けています。とCakeスクリプトAlias/Addinの最小限の例は何ですか?
Cakeアドインスクリプトエイリアスを作成するために最低限必要なものは何ですか?
私は自分のaddinをCakeにDSLを拡張するために作成しています。ドキュメントは少し欠けています。とCakeスクリプトAlias/Addinの最小限の例は何ですか?
Cakeアドインスクリプトエイリアスを作成するために最低限必要なものは何ですか?
アドインはNuGetパッケージとしてパッケージ化された通常の.NETアセンブリです。実際、ほとんどの.NETアセンブリを参照できます。別名は、通常のアセンブリを超えて追加何
:
最小エイリアス実装は、拡張メソッドで、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でそれを参照することができます