Adding support for dotnet core 3.1

This commit is contained in:
lachezar.kanavrov
2019-12-11 14:35:19 +02:00
committed by MysticBoy
parent 64f7f5f939
commit 4088fa2308
20 changed files with 270 additions and 165 deletions

View File

@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2050
# Visual Studio Version 16
VisualStudioVersion = 16.0.29326.143
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Quartzmin", "Source\Quartzmin\Quartzmin.csproj", "{E14F97E0-8B3B-43A2-9820-2F4B94497253}"
EndProject
@@ -19,7 +19,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCoreSelfHost", "Source\E
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormSelfHost", "Source\Examples\WinFormSelfHost\WinFormSelfHost.csproj", "{C54F4403-F40A-497C-B3A7-D1F1E1830D52}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspNetCoreDocker", "Source\Examples\AspNetCoreDocker\AspNetCoreDocker.csproj", "{68D816F2-21BF-4376-ABF4-70390E4783C5}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AspNetCoreDocker", "Source\Examples\AspNetCoreDocker\AspNetCoreDocker.csproj", "{68D816F2-21BF-4376-ABF4-70390E4783C5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspNetCore3", "Source\Examples\AspNetCore3\AspNetCore3.csproj", "{3B2A3329-3BBB-4C6B-A42A-07EE565A2EB8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -59,6 +61,10 @@ Global
{68D816F2-21BF-4376-ABF4-70390E4783C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68D816F2-21BF-4376-ABF4-70390E4783C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68D816F2-21BF-4376-ABF4-70390E4783C5}.Release|Any CPU.Build.0 = Release|Any CPU
{3B2A3329-3BBB-4C6B-A42A-07EE565A2EB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B2A3329-3BBB-4C6B-A42A-07EE565A2EB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B2A3329-3BBB-4C6B-A42A-07EE565A2EB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B2A3329-3BBB-4C6B-A42A-07EE565A2EB8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -69,43 +75,9 @@ Global
{7CF90DB9-37C4-4704-910E-BF1DB8AB79F1} = {B669A725-70A9-4E80-BAC7-9765A14CAAA4}
{C54F4403-F40A-497C-B3A7-D1F1E1830D52} = {B669A725-70A9-4E80-BAC7-9765A14CAAA4}
{68D816F2-21BF-4376-ABF4-70390E4783C5} = {B669A725-70A9-4E80-BAC7-9765A14CAAA4}
{3B2A3329-3BBB-4C6B-A42A-07EE565A2EB8} = {B669A725-70A9-4E80-BAC7-9765A14CAAA4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0357313D-BD09-4C5D-AF0D-439B3BD33B5A}
EndGlobalSection
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 9
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = http://tfs/defaultcollection
SccLocalPath0 = .
SccProjectUniqueName1 = Source\\Quartzmin\\Quartzmin.csproj
SccProjectName1 = Source/Quartzmin
SccLocalPath1 = Source\\Quartzmin
SccProjectUniqueName2 = Source\\Quartz.Plugins.RecentHistory\\Quartz.Plugins.RecentHistory.csproj
SccProjectName2 = Source/Quartz.Plugins.RecentHistory
SccLocalPath2 = Source\\Quartz.Plugins.RecentHistory
SccProjectUniqueName3 = Source\\Quartzmin.SelfHost\\Quartzmin.SelfHost.csproj
SccProjectName3 = Source/Quartzmin.SelfHost
SccLocalPath3 = Source\\Quartzmin.SelfHost
SccProjectUniqueName4 = Source\\Examples\\NetCoreSelfHost\\NetCoreSelfHost.csproj
SccProjectTopLevelParentUniqueName4 = Quartzmin.sln
SccProjectName4 = Source/Examples/NetCoreSelfHost
SccLocalPath4 = Source\\Examples\\NetCoreSelfHost
SccProjectUniqueName5 = Source\\Examples\\AspNetCoreHost\\AspNetCoreHost.csproj
SccProjectTopLevelParentUniqueName5 = Quartzmin.sln
SccProjectName5 = Source/Examples/AspNetCoreHost
SccLocalPath5 = Source\\Examples\\AspNetCoreHost
SccProjectUniqueName6 = Source\\Examples\\AspNetWebHost\\AspNetWebHost.csproj
SccProjectTopLevelParentUniqueName6 = Quartzmin.sln
SccProjectName6 = Source/Examples/AspNetWebHost
SccLocalPath6 = Source\\Examples\\AspNetWebHost
SccProjectUniqueName7 = Source\\Examples\\WinFormSelfHost\\WinFormSelfHost.csproj
SccProjectTopLevelParentUniqueName7 = Quartzmin.sln
SccProjectName7 = Source/Examples/WinFormSelfHost
SccLocalPath7 = Source\\Examples\\WinFormSelfHost
SccProjectUniqueName8 = Source\\Examples\\AspNetCoreDocker\\AspNetCoreDocker.csproj
SccProjectTopLevelParentUniqueName8 = Quartzmin.sln
SccProjectName8 = Source/Examples/AspNetCoreDocker
SccLocalPath8 = Source\\Examples\\AspNetCoreDocker
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\Shared\DemoScheduler.cs" Link="DemoScheduler.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Quartzmin\Quartzmin.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Quartzmin;
namespace AspNetCore3
{
public class Program
{
public static void Main( string[] args )
{
var scheduler = DemoScheduler.Create().Result;
var host = WebHost.CreateDefaultBuilder( args ).Configure( app =>
{
app.UseQuartzmin( new QuartzminOptions() { Scheduler = scheduler } );
} ).ConfigureServices( services =>
{
services.AddQuartzmin();
} )
.Build();
host.Start();
while ( !scheduler.IsShutdown )
Thread.Sleep( 250 );
}
}
}

View File

@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}

View File

@@ -1,4 +1,4 @@
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics;
@@ -13,65 +13,85 @@ namespace Quartzmin
{
public static class ApplicationBuilderExtensions
{
public static void UseQuartzmin(this IApplicationBuilder app, QuartzminOptions options, Action<Services> configure = null)
public static void UseQuartzmin( this IApplicationBuilder app, QuartzminOptions options, Action<Services> configure = null )
{
options = options ?? throw new ArgumentNullException(nameof(options));
options = options ?? throw new ArgumentNullException( nameof( options ) );
app.UseFileServer(options);
app.UseFileServer( options );
var services = Services.Create(options);
configure?.Invoke(services);
var services = Services.Create( options );
configure?.Invoke( services );
app.Use(async (context, next) =>
app.Use( async ( context, next ) =>
{
context.Items[typeof( Services )] = services;
await next.Invoke();
} );
app.UseExceptionHandler( errorApp =>
{
errorApp.Run( async context =>
{
var ex = context.Features.Get<IExceptionHandlerFeature>().Error;
context.Response.StatusCode = 500;
context.Response.ContentType = "text/html";
await context.Response.WriteAsync( services.ViewEngine.ErrorPage( ex ) );
} );
} );
#if NETCOREAPP
app.UseRouting();
app.UseEndpoints( endpoints =>
{
context.Items[typeof(Services)] = services;
await next.Invoke();
});
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
var ex = context.Features.Get<IExceptionHandlerFeature>().Error;
context.Response.StatusCode = 500;
context.Response.ContentType = "text/html";
await context.Response.WriteAsync(services.ViewEngine.ErrorPage(ex));
});
});
app.UseMvc(routes =>
endpoints.MapControllerRoute( nameof( Quartzmin ), "{controller=Scheduler}/{action=Index}" );
} );
#else
app.UseMvc( routes =>
{
routes.MapRoute(
name: nameof(Quartzmin),
template: "{controller=Scheduler}/{action=Index}");
});
name: nameof( Quartzmin ),
template: "{controller=Scheduler}/{action=Index}" );
} );
#endif
}
private static void UseFileServer(this IApplicationBuilder app, QuartzminOptions options)
private static void UseFileServer( this IApplicationBuilder app, QuartzminOptions options )
{
IFileProvider fs;
if (string.IsNullOrEmpty(options.ContentRootDirectory))
fs = new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly(), "Content");
if ( string.IsNullOrEmpty( options.ContentRootDirectory ) )
fs = new ManifestEmbeddedFileProvider( Assembly.GetExecutingAssembly(), "Content" );
else
fs = new PhysicalFileProvider(options.ContentRootDirectory);
fs = new PhysicalFileProvider( options.ContentRootDirectory );
var fsOptions = new FileServerOptions()
{
RequestPath = new PathString("/Content"),
RequestPath = new PathString( "/Content" ),
EnableDefaultFiles = false,
EnableDirectoryBrowsing = false,
FileProvider = fs
};
app.UseFileServer(fsOptions);
app.UseFileServer( fsOptions );
}
public static void AddQuartzmin(this IServiceCollection services)
#if NETCOREAPP
public static void AddQuartzmin( this IServiceCollection services )
{
services.AddMvcCore()
.AddApplicationPart(Assembly.GetExecutingAssembly())
.AddJsonFormatters();
services.AddControllers( options =>
{
//options.EnableEndpointRouting = false;
} )
.AddApplicationPart( Assembly.GetExecutingAssembly() )
.AddNewtonsoftJson();
}
#else
public static void AddQuartzmin( this IServiceCollection services )
{
services.AddMvcCore()
.AddApplicationPart( Assembly.GetExecutingAssembly() )
.AddJsonFormatters();
}
#endif
}
}

View File

@@ -7,7 +7,7 @@ using System.Linq;
using System.Threading.Tasks;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
#endif
#if NETFRAMEWORK

View File

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
using System.Globalization;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
#endif
#if NETFRAMEWORK

View File

@@ -5,7 +5,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
#endif
#if NETFRAMEWORK

View File

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
using System.Threading;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http.Features;
#endif
@@ -37,8 +37,12 @@ namespace Quartzmin.Controllers
}
catch (JsonSerializationException ex) when (ex.Message.StartsWith("Could not create an instance of type"))
{
return new BadRequestResult() { ReasonPhrase = "Unknown Type Handler" };
}
#if NETCOREAPP
return new BadRequestResult();
#else
return new BadRequestResult() { ReasonPhrase = "Unknown Type Handler" };
#endif
}
var dataMapForm = (await formData.GetJobDataMapForm(includeRowIndex: false)).SingleOrDefault(); // expected single row

View File

@@ -9,7 +9,7 @@ using System.Linq;
using System.Threading.Tasks;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
#endif
#if NETFRAMEWORK

View File

@@ -5,19 +5,20 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Quartzmin.Models;
using Quartzmin.Helpers;
using Quartz;
namespace Quartzmin.Controllers
{
#region Target-Specific Directives
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
public abstract partial class PageControllerBase : Microsoft.AspNetCore.Mvc.ControllerBase
public abstract partial class PageControllerBase : Microsoft.AspNetCore.Mvc.ControllerBase
{
private static readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings()
{
@@ -26,7 +27,8 @@ namespace Quartzmin.Controllers
protected Services Services => (Services) Request.HttpContext.Items[typeof(Services)];
protected string GetRouteData(string key) => RouteData.Values[key].ToString();
protected IActionResult Json(object content) => new JsonResult(content, _serializerSettings);
protected IActionResult Json( object content ) => new JsonResult( content, _serializerSettings );
protected IActionResult NotModified() => new StatusCodeResult(304);
@@ -83,9 +85,9 @@ namespace Quartzmin.Controllers
}
#endif
#endregion
#endregion
public abstract partial class PageControllerBase
public abstract partial class PageControllerBase
{
protected IScheduler Scheduler => Services.Scheduler;

View File

@@ -10,7 +10,7 @@ using System.Threading.Tasks;
using System.Globalization;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
#endif
#if NETFRAMEWORK

View File

@@ -9,7 +9,7 @@ using System.Linq;
using System.Threading.Tasks;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using Microsoft.AspNetCore.Mvc;
#endif
#if NETFRAMEWORK

View File

@@ -13,7 +13,7 @@ using Quartz.Impl.Matchers;
using Quartz.Plugins.RecentHistory;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using HttpRequest = Microsoft.AspNetCore.Http.HttpRequest;
#endif
#if NETFRAMEWORK
@@ -68,8 +68,8 @@ namespace Quartzmin
public static string ReadAsString(this HttpRequest request)
{
#if NETSTANDARD
using (var ms = new MemoryStream())
#if ( NETSTANDARD || NETCOREAPP )
using ( var ms = new MemoryStream())
{
request.Body.CopyTo(ms);
return Encoding.UTF8.GetString(ms.ToArray());

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
#region Target-Specific Directives
#if NETSTANDARD
#if ( NETSTANDARD || NETCOREAPP )
using HttpRequest = Microsoft.AspNetCore.Http.HttpRequest;
#endif
#if NETFRAMEWORK
@@ -57,8 +57,8 @@ namespace Quartzmin.Helpers
return field.Substring(n + 1);
}
#if NETSTANDARD
public static Task<List<KeyValuePair<string, object>>> GetFormData(this HttpRequest request)
#if ( NETSTANDARD || NETCOREAPP )
public static Task<List<KeyValuePair<string, object>>> GetFormData(this HttpRequest request)
{
var result = new List<KeyValuePair<string, object>>();

View File

@@ -1,14 +1,18 @@

namespace Quartzmin.Helpers
{
#if NETSTANDARD
#if (NETSTANDARD || NETCOREAPP)
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
public class JsonErrorResponseAttribute : ActionFilterAttribute
{
static readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings();
private static readonly JsonSerializerSettings _serializerSettings = new JsonSerializerSettings()
{
ContractResolver = new DefaultContractResolver(), // PascalCase as default
};
public override void OnActionExecuted(ActionExecutedContext context)
{

View File

@@ -0,0 +1,15 @@
#if NETCOREAPP
using System;
using System.Text.Json;
namespace Quartzmin.Helpers
{
public class JsonPascalCaseNamingPolicy : JsonNamingPolicy
{
public override string ConvertName( string name )
{
return name;
}
}
}
#endif

View File

@@ -4,8 +4,8 @@ namespace Quartzmin.Models
{
public class FormFile
{
#if NETSTANDARD
readonly Microsoft.AspNetCore.Http.IFormFile _file;
#if ( NETSTANDARD || NETCOREAPP )
readonly Microsoft.AspNetCore.Http.IFormFile _file;
public FormFile(Microsoft.AspNetCore.Http.IFormFile file) => _file = file;
public Stream GetStream() => _file.OpenReadStream();

View File

@@ -1,78 +1,91 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net452</TargetFrameworks>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<GeneratePackageOnBuild Condition="'$(Configuration)' == 'Release'">true</GeneratePackageOnBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>1591</NoWarn>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netcoreapp3.1;net452</TargetFrameworks>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<GeneratePackageOnBuild Condition="'$(Configuration)' == 'Release'">true</GeneratePackageOnBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>1591</NoWarn>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
<Version>1.0.3</Version>
<Product>Quartzmin</Product>
<Title>Web management tool for Quartz.NET</Title>
<Authors>Jan Lucansky</Authors>
<PackageProjectUrl>https://github.com/jlucansky/Quartzmin</PackageProjectUrl>
<PackageIconUrl>https://raw.githubusercontent.com/jlucansky/public-assets/master/Quartzmin/avatar.png</PackageIconUrl>
<Description>Powerful, easy to use web management tool for Quartz.NET</Description>
<PackageTags>quartz;web;ui</PackageTags>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Copyright>Copyright © 2018 Jan Lucansky</Copyright>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/jlucansky/Quartzmin</RepositoryUrl>
</PropertyGroup>
<Version>1.0.3</Version>
<Product>Quartzmin</Product>
<Title>Web management tool for Quartz.NET</Title>
<Authors>Jan Lucansky</Authors>
<PackageProjectUrl>https://github.com/jlucansky/Quartzmin</PackageProjectUrl>
<PackageIconUrl>https://raw.githubusercontent.com/jlucansky/public-assets/master/Quartzmin/avatar.png</PackageIconUrl>
<Description>Powerful, easy to use web management tool for Quartz.NET</Description>
<PackageTags>quartz;web;ui</PackageTags>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Copyright>Copyright © 2018 Jan Lucansky</Copyright>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/jlucansky/Quartzmin</RepositoryUrl>
<EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^net\d'))">
<DefineConstants>NETFRAMEWORK</DefineConstants>
<AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>
</PropertyGroup>
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^netstandard\d'))">
<DefineConstants>NETSTANDARD</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^net\d'))">
<DefineConstants>NETFRAMEWORK</DefineConstants>
<AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>
</PropertyGroup>
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^netstandard\d'))">
<DefineConstants>NETSTANDARD</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^netcoreapp\d'))">
<DefineConstants>NETCOREAPP</DefineConstants>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Quartz.Plugins.RecentHistory\Quartz.Plugins.RecentHistory.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Quartz.Plugins.RecentHistory\Quartz.Plugins.RecentHistory.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Handlebars.Net" Version="1.9.5" />
<PackageReference Include="JsonSubTypes" Version="1.5.1" />
<PackageReference Include="Quartz" Version="3.0.7" />
</ItemGroup>
<ItemGroup Condition="$(DefineConstants.Contains('NETFRAMEWORK'))">
<Reference Include="System.Web" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<PackageReference Include="Microsoft.AspNet.WebApi" Version="5.2.6" />
<PackageReference Include="Microsoft.AspNet.WebApi.Owin" Version="5.2.6" />
<PackageReference Include="Microsoft.Owin.StaticFiles" Version="2.1.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Handlebars.Net" Version="1.9.5" />
<PackageReference Include="JsonSubTypes" Version="1.5.1" />
<PackageReference Include="Quartz" Version="3.0.7" />
</ItemGroup>
<ItemGroup Condition="$(DefineConstants.Contains('NETSTANDARD'))">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="2.1.0" />
</ItemGroup>
<ItemGroup Condition="$(DefineConstants.Contains('NETFRAMEWORK'))">
<Reference Include="System.Web" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<PackageReference Include="Microsoft.AspNet.WebApi" Version="5.2.6" />
<PackageReference Include="Microsoft.AspNet.WebApi.Owin" Version="5.2.6" />
<PackageReference Include="Microsoft.Owin.StaticFiles" Version="2.1.0" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\LICENSE" Pack="true" PackagePath="" />
</ItemGroup>
<ItemGroup Condition="$(DefineConstants.Contains('NETSTANDARD'))">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="2.1.0" />
</ItemGroup>
<ItemGroup>
<None Remove="*.vspscc" />
</ItemGroup>
<ItemGroup Condition="$(DefineConstants.Contains('NETCOREAPP'))">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="3.1.0" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Content\**" />
<EmbeddedResource Include="Views\**" />
<EmbeddedResource Include="TypeHandlers\*.hbs" />
<EmbeddedResource Include="TypeHandlers\*.js" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\LICENSE" Pack="true" PackagePath="" />
</ItemGroup>
<ItemGroup>
<None Remove="*.vspscc" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Content\**" />
<EmbeddedResource Include="Views\**" />
<EmbeddedResource Include="TypeHandlers\*.hbs" />
<EmbeddedResource Include="TypeHandlers\*.js" />
</ItemGroup>
</Project>