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

C# 如何在同一解决方案中访问另一个项目的服务,c#,.net,configuration,autofac,autofac-module,C#,.net,Configuration,Autofac,Autofac Module,我有一个控制台应用程序a和一个web应用程序B,其中a需要使用B中的服务类。为了处理依赖关系,我尝试在B中创建一个在a的主方法中注册的autofac模块: public class ImageServiceModule : Module { protected override void Load(ContainerBuilder builder) { builder.RegisterType<ImageService>().As<IImageS

我有一个控制台应用程序a和一个web应用程序B,其中a需要使用B中的服务类。为了处理依赖关系,我尝试在B中创建一个在a的主方法中注册的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);
    }
}
公共类ImageServiceModule:模块
{
受保护的覆盖无效负载(ContainerBuilder builder)
{
builder.RegisterType().As();
...
var configurationBuilder=new configurationBuilder()
.AddJsonFile(“appsettings.json”);
var configuration=configurationBuilder.Build();
var services=newservicecolection();
services.Configure(configuration.GetSection(“存储设置”));
建造商。填充(服务);
}
}
现在的问题是,由于程序在A的上下文中运行,B从A读取appSettings


有没有办法让模块中注册的服务从B的appsettings读取?或者说,autofac模块一开始使用的方法是错误的吗?

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


让我知道你的想法!Rgrds

请记住,在部署管道中使用.config文件转换是非常常见的,因此,您真的想使用不同的配置部署两个不同的应用程序吗?如果不是这样,那么将confing放在正在运行的应用程序中应该是有意义的


让我知道你的想法!Rgrds

配置文件是为每个应用程序设计的。这意味着您将为每个应用程序提供一个配置文件。在您的情况下,您将有一个控制台应用程序的配置文件和另一个web应用程序的配置文件

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

如果要为应用程序的一部分创建单个配置文件,可以使用自定义设置文件创建库项目

假设您有
A
B
,您可以创建一个名为
C
的新库项目,该项目将被
A
C
引用。然后在
C
中,您可以在配置文件中创建一个
C.settings.json
文件并使用它。为了让生成过程自动将
c.settings.json
文件复制到每个项目,您可以将Visual Studio中的
copy to Output Directory
属性设置为
copy always

您的解决方案应该如下所示:


配置文件是为每个应用程序设计的。这意味着您将为每个应用程序提供一个配置文件。在您的情况下,您将有一个控制台应用程序的配置文件和另一个web应用程序的配置文件

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

如果要为应用程序的一部分创建单个配置文件,可以使用自定义设置文件创建库项目

假设您有
A
B
,您可以创建一个名为
C
的新库项目,该项目将被
A
C
引用。然后在
C
中,您可以在配置文件中创建一个
C.settings.json
文件并使用它。为了让生成过程自动将
c.settings.json
文件复制到每个项目,您可以将Visual Studio中的
copy to Output Directory
属性设置为
copy always

您的解决方案应该如下所示:


web应用程序的appsettings包含数据库凭据和其他特定于数据库的设置,这些设置仅在从B的服务调用的存储库中使用。将这些设置添加到a(从不直接使用这些设置中的任何一个)不是有点奇怪吗?web应用程序的appsettings包含数据库凭据和其他特定于数据库的设置,这些设置仅在从B的服务调用的存储库中使用。将这些设置添加到(从不直接使用这些设置中的任何一个)中不是有点奇怪吗?