dotnet コア用のカスタム コード ジェネレーターを作成しようとしていますが、ドキュメントが限られているため、これまでのところほとんど成功していません。
CodeGeneration ソース コードを少し調べて、コマンド ラインからジェネレーターをトリガーする方法と、それが内部でどのように機能するかを見つけました。
dotnet コア内で利用可能なジェネレーターは私のニーズを満たしていないので、独自の CodeGenerator を作成しようとしましたが、「dotnet aspnet-codegenerator」コマンドで呼び出すことができないようです。以下は私のカスタム コード ジェネレーターです (現在、実装はありません。私の目標は、dotnet cli からこれをトリガーして例外を発生させることです)。
namespace TestWebApp.CodeGenerator
{
[Alias("test")]
public class TestCodeGenerator : ICodeGenerator
{
public async Task GenerateCode(TestCodeGeneratorModel model)
{
await Task.CompletedTask;
throw new NotImplementedException();
}
}
public class TestCodeGeneratorModel
{
[Option(Name = "controllerName", ShortName = "name", Description = "Name of the controller")]
public string ControllerName { get; set; }
[Option(Name = "readWriteActions", ShortName = "actions", Description = "Specify this switch to generate Controller with read/write actions when a Model class is not used")]
public bool GenerateReadWriteActions { get; set; }
}
}
以下は、コードジェネレーターを呼び出そうとしている方法です。
dotnet aspnet-codegenerator -p . TestCodeGenerator TestController -m TestWebApp.Models.TestModel
また
dotnet aspnet-codegenerator -p . test TestController -m TestWebApp.Models.TestModel
ただし、これは機能していないようで、カスタム コード ジェネレーターを見つけることができないと不平を言っています。以下のエラーメッセージを参照してください。
Finding the generator 'TestCodeGenerator'...
No code generators found with the name 'TestCodeGenerator'
at Microsoft.VisualStudio.Web.CodeGeneration.CodeGeneratorsLocator.GetCodeGenerator(String codeGeneratorName)
at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String[] args)
RunTime 00:00:06.23
不足しているものは何ですか? または、CogeGenerator がカスタム クラスを取得するには、どのような変更を行う必要がありますか?
再現: Github