簡體   English   中英

為 ASP.NET 核心和 .NET 核心 CLT 配置服務

[英]Configuring services for ASP.NET core and .NET core CLT

我想使用相同的代碼並希望配置為 ASP.NET 內核和 .net 內核命令行工具設置 DI。

我了解如何使用 Startup.cs 為 ASP.NET 內核配置服務。 我了解如何在命令行工具中構建ServiceCollection ,盡管除了顯式訪問它之外,我不確定如何使用它,而且我認為我的 CLT 必須自己管理服務集合(與提供服務的 ASP.NET 不同集合和構造函數注入)。

我的 web 和 CLT 項目可以使用相同的擴展方法來注冊我的服務嗎? Startup.ConfigureServices會將它收到的ServiceCollection和 Configuration 傳遞給我的擴展方法。 CLT 我可以傳遞 CLT 管理的ServiceCollection ,但它可以從appsettings.json文件中獲得相同類型的配置嗎?

在 CLT 中,我需要一些掘金:

Microsoft.Extensions.Cofiguration.Json
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting

private static ServiceCollection _services = new ServiceCollection();

    public static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder()
//TODO:                .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
        builder.Build();
        IConfigurationBuilder configBuilder =
            new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
        ServiceProvider provider = ConfigureServices(_services, configBuilder.Build()).BuildServiceProvider(); //TODO: dispose
        _repo = provider.GetService<IRepository>();
        provider.Dispose();

我可能會將 CLT 的一個屬性設置為提供者,但是我不確定如何確保它被處置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM