【问题标题】:Cannot add services to DI in a scaffolder无法在脚手架中向 DI 添加服务
【发布时间】:2015-04-07 12:30:13
【问题描述】:

我正在尝试从 github 存储库中的一个开始创建自定义脚手架:我有一个脚手架项目,它是 mvc 脚手架的修改克隆和另一个类库。由于我想在我的库中使用 [NotNull]IApplicationEnvironment 我必须添加对 Microsoft.Framework.CodeGenerationMicrosoft.Framework.CodeGeneration.Common 和 Microsoft.Framework.Runtime.Interfaces 在我的库项目中。
我想在运行特定生成器时向 DI 添加一些元素,但遇到了一些问题。

在脚手架模块中,服务是在 Program 类中配置的:我想在生成器启动时添加这个初始化代码,但我没有找到方法。

我试图在程序类中添加代码,但我有另一个问题:库引用了 .CodeGeneration 模块,并且要添加到库中定义的服务类,我必须在 . CodeGeneration project.json ,所以我有一个循环引用,不支持这个。

我该如何解决这个问题?

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    您似乎正在尝试定义一个新服务并注入默认服务集合,以便脚手架实现可以使用该服务。

    由于服务和实现是在您的类库中定义的,要注入它,您必须修改 CodeGeneration 类库并添加对您的类库的引用,并且由于您的类库还实现了自定义脚手架,它需要引用 CodeGeneration 类库!

    我看到 2 个选择:

    1. 您可以将服务和实现定义移动到 CodeGeneration 类库(在您的 fork 中),并让您的类库引用 CodeGeneration,但不能以其他方式引用。
    2. 将您的服务和实现保存在单独的类库中,让 CodeGeneration 引用它,在不同的类库中实现您的脚手架,并让它引用 CodeGeneration。

    我们可以选择添加支持以从脚手架框架中的其他组件添加自定义服务,但这还没有完成。以上选择之一应该可以让您继续前进。

    如果有帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      • 2022-01-23
      • 2022-10-07
      • 1970-01-01
      相关资源
      最近更新 更多