Commit 0d0ad123 authored by Steve Smith's avatar Steve Smith

Upgrading to 3.0 - mostly works

parent af221a46
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
<AssemblyName>CleanArchitecture.Web</AssemblyName> <AssemblyName>CleanArchitecture.Web</AssemblyName>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
...@@ -22,15 +22,15 @@ ...@@ -22,15 +22,15 @@
<PackageReference Include="Autofac" Version="4.9.3" /> <PackageReference Include="Autofac" Version="4.9.3" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.4.0" /> <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.4.0" />
<PackageReference Include="Dapper" Version="1.60.6" /> <PackageReference Include="Dapper" Version="1.60.6" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" PrivateAssets="All" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.0.76" /> <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.0.76" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc3" />
<PackageReference Include="SQLite" Version="3.13.0" /> <PackageReference Include="SQLite" Version="3.13.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.6"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.6" />
</ItemGroup> </ItemGroup>
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish"> <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
......
using CleanArchitecture.Infrastructure.Data; using Autofac.Extensions.DependencyInjection;
using CleanArchitecture.Infrastructure.Data;
using Microsoft.AspNetCore; using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System; using System;
...@@ -12,7 +14,7 @@ namespace CleanArchitecture.Web ...@@ -12,7 +14,7 @@ namespace CleanArchitecture.Web
{ {
public static void Main(string[] args) public static void Main(string[] args)
{ {
var host = CreateWebHostBuilder(args).Build(); var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope()) using (var scope = host.Services.CreateScope())
{ {
...@@ -21,7 +23,7 @@ namespace CleanArchitecture.Web ...@@ -21,7 +23,7 @@ namespace CleanArchitecture.Web
try try
{ {
var context = services.GetRequiredService<AppDbContext>(); var context = services.GetRequiredService<AppDbContext>();
// context.Database.Migrate(); // context.Database.Migrate();
context.Database.EnsureCreated(); context.Database.EnsureCreated();
SeedData.Initialize(services); SeedData.Initialize(services);
} }
...@@ -35,8 +37,18 @@ namespace CleanArchitecture.Web ...@@ -35,8 +37,18 @@ namespace CleanArchitecture.Web
host.Run(); host.Run();
} }
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => public static IHostBuilder CreateHostBuilder(string[] args)
WebHost.CreateDefaultBuilder(args) {
.UseStartup<Startup>(); return Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(serverOptions =>
{
// Set properties and call methods on options
})
.UseStartup<Startup>();
});
}
} }
} }
...@@ -24,8 +24,9 @@ namespace CleanArchitecture.Web ...@@ -24,8 +24,9 @@ namespace CleanArchitecture.Web
} }
public IConfiguration Configuration { get; } public IConfiguration Configuration { get; }
//public ILifetimeScope AutofacContainer { get; private set; }
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.Configure<CookiePolicyOptions>(options => services.Configure<CookiePolicyOptions>(options =>
{ {
...@@ -38,40 +39,49 @@ namespace CleanArchitecture.Web ...@@ -38,40 +39,49 @@ namespace CleanArchitecture.Web
services.AddDbContext<AppDbContext>(options => services.AddDbContext<AppDbContext>(options =>
options.UseSqlite("Data Source=database.sqlite")); // will be created in web project root options.UseSqlite("Data Source=database.sqlite")); // will be created in web project root
// options.UseInMemoryDatabase(dbName)); // options.UseInMemoryDatabase(dbName));
//options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); //options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddMvc() services.AddMvc()
.AddControllersAsServices() .AddControllersAsServices();
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1); //.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSwaggerGen(c => //services.AddSwaggerGen(c =>
{ //{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); // c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
}); //});
return BuildDependencyInjectionProvider(services); //return BuildDependencyInjectionProvider(services);
} }
private static IServiceProvider BuildDependencyInjectionProvider(IServiceCollection services) public void ConfigureContainer(ContainerBuilder builder)
{ {
var builder = new ContainerBuilder(); // builder.RegisterModule(new AutofacModule());
// Populate the container using the service collection
builder.Populate(services);
Assembly webAssembly = Assembly.GetExecutingAssembly(); Assembly webAssembly = Assembly.GetExecutingAssembly();
Assembly coreAssembly = Assembly.GetAssembly(typeof(BaseEntity)); Assembly coreAssembly = Assembly.GetAssembly(typeof(BaseEntity));
Assembly infrastructureAssembly = Assembly.GetAssembly(typeof(EfRepository)); // TODO: Move to Infrastucture Registry Assembly infrastructureAssembly = Assembly.GetAssembly(typeof(EfRepository)); // TODO: Move to Infrastucture Registry
builder.RegisterAssemblyTypes(webAssembly, coreAssembly, infrastructureAssembly).AsImplementedInterfaces(); builder.RegisterAssemblyTypes(webAssembly, coreAssembly, infrastructureAssembly).AsImplementedInterfaces();
IContainer applicationContainer = builder.Build();
return new AutofacServiceProvider(applicationContainer);
} }
public void Configure(IApplicationBuilder app, IHostingEnvironment env) //private static IServiceProvider BuildDependencyInjectionProvider(IServiceCollection services)
//{
// var builder = new ContainerBuilder();
// // Populate the container using the service collection
// builder.Populate(services);
// Assembly webAssembly = Assembly.GetExecutingAssembly();
// Assembly coreAssembly = Assembly.GetAssembly(typeof(BaseEntity));
// Assembly infrastructureAssembly = Assembly.GetAssembly(typeof(EfRepository)); // TODO: Move to Infrastucture Registry
// builder.RegisterAssemblyTypes(webAssembly, coreAssembly, infrastructureAssembly).AsImplementedInterfaces();
// IContainer applicationContainer = builder.Build();
// return new AutofacServiceProvider(applicationContainer);
//}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{ {
if (env.IsDevelopment()) if (env.EnvironmentName == "Development")
{ {
app.UseDeveloperExceptionPage(); app.UseDeveloperExceptionPage();
} }
...@@ -86,19 +96,22 @@ namespace CleanArchitecture.Web ...@@ -86,19 +96,22 @@ namespace CleanArchitecture.Web
app.UseCookiePolicy(); app.UseCookiePolicy();
// Enable middleware to serve generated Swagger as a JSON endpoint. // Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger(); //app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), specifying the Swagger JSON endpoint. // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c => //app.UseSwaggerUI(c =>
{ //{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); // c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
}); //});
app.UseRouting();
app.UseMvc(routes => app.UseEndpoints(endpoints =>
{ {
routes.MapRoute( endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapControllerRoute(
name: "default", name: "default",
template: "{controller=Home}/{action=Index}/{id?}"); pattern: "{controller=Home}/{action=Index}/{id?}");
}); });
} }
} }
......
...@@ -5,10 +5,12 @@ ...@@ -5,10 +5,12 @@
--> -->
<system.webServer> <system.webServer>
<handlers> <handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers> </handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00"> <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00" hostingModel="InProcess">
<environmentVariables /> <environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore> </aspNetCore>
</system.webServer> </system.webServer>
</configuration> </configuration>
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="ReportGenerator" Version="4.2.5" /> <PackageReference Include="ReportGenerator" Version="4.2.5" />
<PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0-rc1.19456.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>
......
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="ReportGenerator" Version="4.2.5" /> <PackageReference Include="ReportGenerator" Version="4.2.5" />
<PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0-rc1.19456.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup> </PropertyGroup>
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="ReportGenerator" Version="4.2.5" /> <PackageReference Include="ReportGenerator" Version="4.2.5" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6" PrivateAssets="all">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference> </PackageReference>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment