如何在同一解决方案中访问另一个项目的服务

问题描述 投票:1回答:2

我有一个控制台应用程序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模块首先在这里使用错误的方法?

.net configuration autofac autofac-module
2个回答
0
投票

请记住,在部署管道中使用.config文件转换非常普遍,因此,您真的要部署两个具有不同配置的不同应用程序吗?如果没有,那么将confing放入正在运行的应用程序中应该很有意义。

让我知道您的想法! Rgrds!


0
投票

配置文件旨在针对每个应用程序。这意味着您将为每个应用程序拥有一个配置文件。对于您的情况,您将为控制台应用程序配置一个配置文件,为网络应用程序配置一个配置文件。

如果两个应用程序都应用了某些设置,通常会在每个配置文件中重复这些设置。

如果您希望为应用程序的一部分提供一个配置文件,则可以使用自定义设置文件创建一个库项目。

假设您有AB,您可以创建一个名为C的新库项目,该项目将同时被AC引用。然后,可以在C中创建一个c.settings.json文件,并在配置文件中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.