簡體   English   中英

如何在同一解決方案中訪問另一個項目的服務

[英]How to access service of another project in same solution

我有一個控制台應用程序 A 和一個 Web 應用程序 B,其中 A 需要使用 B 中的服務類。為了處理依賴項,我嘗試在 B 中創建一個在 A 的 Main 方法中注冊的 autofac 模塊:

public class ImageServiceModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<ImageService>().As<IImageService>();
        ...

        var configurationBuilder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json");
        var configuration = configurationBuilder.Build();

        var services = new ServiceCollection();
        services.Configure<StorageSettings>(configuration.GetSection("StorageSettings"));

        builder.Populate(services);
    }
}

現在,問題是由於程序在 A 的上下文中運行,B 從 A 讀取 appSettings ...

有沒有辦法讓模塊中注冊的服務從 B 的 appsettings 中讀取? 還是 autofac 模塊首先在這里使用是錯誤的方法?

請記住,在部署管道中使用 .config 文件轉換是很常見的,所以,您真的想部署兩個具有不同配置的不同應用程序嗎? 如果沒有,將 confing 放在正在運行的應用程序中應該是有意義的。

讓我知道你的想法! Rgrds!

配置文件旨在針對每個應用程序。 這意味着每個應用程序都有一個配置文件。 在您的情況下,您將有一個用於控制台應用程序的配置文件和另一個用於您的 Web 應用程序的配置文件。

如果某些設置同時應用於兩個應用程序,通常會在每個配置文件中復制這些設置。

如果您想為應用程序的一部分使用單個配置文件,您可以使用自定義設置文件創建一個庫項目。

假設您有AB ,您可以創建一個名為C的新庫項目,該項目將被AC引用。 然后在C你可以創建一個c.settings.json文件並在你的配置文件中使用它。 為了讓構建過程自動將c.settings.json文件復制到每個項目,您可以將 Visual Studio 中的copy to Output Directory屬性設置為Copy always

您的解決方案應如下所示:

在此處輸入圖片說明

在此處輸入圖片說明

暫無
暫無

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

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