- 在解决方案中创建一个新项目,命名为 StartupLibrary。
- 在 StartupLibrary 项目中添加一个 Startup.cs 文件。
- 将要共享的 Startup 类添加到 StartupLibrary 项目中,并将其重命名为 StartupBase。
- 在 StartupLibrary 项目中,创建一个扩展方法,用于向 IServiceCollection 注册所需的服务:
public static class StartupExtensions
{
public static void AddStartup(this IServiceCollection services)
{
// 添加所需的服务
}
}
- 在其他项目中,添加对 StartupLibrary 项目的引用。
- 在其他项目的 Program.cs 文件中,修改 CreateHostBuilder 方法如下:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup(); // 这里改为使用 Startup 类
});
- 在其他项目的 Startup.cs 文件中,继承 StartupBase 类,并将 ConfigureServices 和 Configure 方法修改为 virtual:
public class Startup : StartupBase
{
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
// 其他服务的注册
}
public override void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
base.Configure(app, env);
// 其他中间件的配置
}
}
- 在 Startup.cs 文件的构造函数中,添加所需的中间件,如 app.UseRouting(),app.UseMvc() 等。
- 在 StartupLibrary 项目和其他项目中,将所需的 NuGet 包引入。