├── DomainService
├── Request.cs
├── Response.cs
├── IDomainService.cs
├── Domain.csproj
└── DomainService.cs
├── deploy.sh
├── .editorconfig
├── Handlers
├── appsettings.json
├── Properties
│ └── AssemblyInfo.cs
├── ServiceCollectionHelper.cs
├── Handler.cs
└── Handlers.csproj
├── .travis.yml
├── Tests
├── Tests.cs
├── Properties
│ └── AssemblyInfo.cs
├── HandlerTests.cs
└── Tests.csproj
├── serverless.yml
├── Serverless.Microservice.Bootstrap.sln
├── README.md
├── .npmignore
└── .gitignore
/DomainService/Request.cs:
--------------------------------------------------------------------------------
1 | namespace Domain
2 | {
3 | public class Request
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/DomainService/Response.cs:
--------------------------------------------------------------------------------
1 | namespace Domain
2 | {
3 | public class Response
4 | {
5 | public string Message { get; set; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/DomainService/IDomainService.cs:
--------------------------------------------------------------------------------
1 | namespace Domain
2 | {
3 | public interface IDomainService
4 | {
5 | Response Process(Request request);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export AWS_ACCESS_KEY_ID=$AWS_SECRET_ID && export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY
4 | serverless deploy --stage v1 --region ap-southeast-2
5 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | # Unix-style newlines with a newline ending every file
4 | [*]
5 | end_of_line = lf
6 | insert_final_newline = true
7 |
8 | indent_style = space
9 | indent_size = 4
10 |
11 | [{package.json,.travis.yml}]
12 | indent_style = space
13 | indent_size = 2
14 |
--------------------------------------------------------------------------------
/Handlers/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "AWS.Logging": {
3 | "IncludeCategory": false,
4 | "IncludeLogLevel": false,
5 | "IncludeNewline": true,
6 | "LogLevel": {
7 | "Default": "Information",
8 | "System": "Information",
9 | "Microsoft": "Information"
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: csharp
2 | dist: trusty
3 | mono: none
4 | dotnet: 2.0.0
5 |
6 | before_script:
7 | - npm install -g serverless
8 |
9 | script:
10 | - "./build.sh --quiet verify"
11 | - dotnet test Tests/Tests.csproj
12 |
13 | #deploy:
14 | #- provider: script
15 | # skip_cleanup: true
16 | # script: "./deploy.sh"
17 | # on:
18 | # branch: master
19 |
--------------------------------------------------------------------------------
/DomainService/Domain.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | Domain
6 | Domain
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Tests/Tests.cs:
--------------------------------------------------------------------------------
1 | using Domain;
2 | using Xunit;
3 | using NSubstitute;
4 | using Microsoft.Extensions.Logging;
5 |
6 | namespace Tests
7 | {
8 | public class Tests
9 | {
10 | [Fact]
11 | public void TestResult()
12 | {
13 | var service = new DomainService(Substitute.For>());
14 |
15 | var result = service.Process(new Request());
16 |
17 | Assert.IsType(result);
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Handlers/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 | using Amazon.Lambda.Core;
3 |
4 | [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
5 |
6 | // Setting ComVisible to false makes the types in this assembly not visible
7 | // to COM components. If you need to access a type in this assembly from
8 | // COM, set the ComVisible attribute to true on that type.
9 | [assembly: ComVisible(false)]
10 |
11 | // The following GUID is for the ID of the typelib if this project is exposed to COM
12 | [assembly: Guid("7d7bae76-8cea-4691-9a55-8c7d121670be")]
13 |
--------------------------------------------------------------------------------
/DomainService/DomainService.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.Logging;
2 |
3 | namespace Domain
4 | {
5 | public class DomainService: IDomainService
6 | {
7 | private readonly ILogger _logger;
8 |
9 | public DomainService(ILogger logger)
10 | {
11 | _logger = logger;
12 | }
13 | public Response Process(Request request)
14 | {
15 | _logger.LogInformation("Processing request: {0}", request);
16 | return new Response
17 | {
18 | Message = "It worked!"
19 | };
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/serverless.yml:
--------------------------------------------------------------------------------
1 | service: serverless-microservice-bootstrap
2 |
3 | provider:
4 | name: aws
5 | runtime: dotnetcore2.0
6 |
7 | # you can overwrite defaults here
8 | stage: v1
9 | region: ap-southeast-2
10 | deploymentBucket: serverless-microservice-bootstrap.${self:provider.region}.deploys
11 |
12 | # you can add packaging information here
13 | package:
14 | artifact: Handlers/bin/release/netcoreapp2.0/publish/deploy-package.zip
15 |
16 | functions:
17 | hello:
18 | handler: Handlers::Handlers.Handler::Hello
19 |
20 | healthcheck:
21 | handler: Handlers::Handlers.Handler::HealthCheck
22 | events:
23 | - http:
24 | path: healthcheck
25 | method: get
26 | cors: true
27 |
--------------------------------------------------------------------------------
/Handlers/ServiceCollectionHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Amazon.Lambda.Core;
3 | using Domain;
4 | using Microsoft.Extensions.DependencyInjection;
5 | using Microsoft.Extensions.Logging;
6 |
7 | namespace Handlers
8 | {
9 | public static class ServiceCollectionHelper
10 | {
11 | public static IServiceProvider ConfigureServiceCollection(ILambdaContext context)
12 | {
13 | var serviceCollection = new ServiceCollection().AddSingleton(context);
14 |
15 | ConfigureServices(serviceCollection);
16 |
17 | return serviceCollection.BuildServiceProvider();
18 | }
19 |
20 | public static void ConfigureServices(IServiceCollection services)
21 | {
22 | services.AddLogging(configure => configure.AddLambdaLogger());
23 | services.AddSingleton();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyConfiguration("")]
9 | [assembly: AssemblyCompany("")]
10 | [assembly: AssemblyProduct("Tests")]
11 | [assembly: AssemblyTrademark("")]
12 |
13 | // Setting ComVisible to false makes the types in this assembly not visible
14 | // to COM components. If you need to access a type in this assembly from
15 | // COM, set the ComVisible attribute to true on that type.
16 | [assembly: ComVisible(false)]
17 |
18 | // The following GUID is for the ID of the typelib if this project is exposed to COM
19 | [assembly: Guid("d3c1b13d-6650-4208-b592-a0af15cf8db2")]
20 |
--------------------------------------------------------------------------------
/Tests/HandlerTests.cs:
--------------------------------------------------------------------------------
1 | using Amazon.Lambda.APIGatewayEvents;
2 | using Amazon.Lambda.TestUtilities;
3 | using Domain;
4 | using Handlers;
5 | using Xunit;
6 |
7 | namespace Tests
8 | {
9 | public class HandlerTests
10 | {
11 | [Fact]
12 | public void TestHealthCheck()
13 | {
14 | var handler = new Handler();
15 |
16 | var request = new APIGatewayProxyRequest();
17 | var context = new TestLambdaContext();
18 |
19 | var response = handler.HealthCheck(request, context);
20 |
21 | Assert.Equal(200, response.StatusCode);
22 | Assert.Equal("OK", response.Body);
23 | }
24 |
25 | [Fact]
26 | public void TestHello()
27 | {
28 | var handler = new Handler();
29 |
30 | var context = new TestLambdaContext();
31 |
32 | var response = handler.Hello(new Request(), context);
33 |
34 | Assert.NotNull(response);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Tests/Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp2.0
5 | portable
6 | Tests
7 | Tests
8 | true
9 | false
10 | false
11 | false
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Handlers/Handler.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Amazon.Lambda.APIGatewayEvents;
3 | using Amazon.Lambda.Core;
4 | using Domain;
5 | using Microsoft.Extensions.DependencyInjection;
6 | using Microsoft.Extensions.Logging;
7 |
8 | namespace Handlers
9 | {
10 | public class Handler
11 | {
12 | public Response Hello(Request request, ILambdaContext context)
13 | {
14 | var serviceProcess = ServiceCollectionHelper.ConfigureServiceCollection(context).GetService();
15 | return serviceProcess.Process(request);
16 | }
17 |
18 | public APIGatewayProxyResponse HealthCheck(APIGatewayProxyRequest request, ILambdaContext context)
19 | {
20 | var logger = ServiceCollectionHelper.ConfigureServiceCollection(context).GetService>();
21 |
22 | logger.LogInformation("Function name is {0}", context.FunctionName);
23 | logger.LogCritical("Http method is {0}", request.HttpMethod);
24 |
25 | return new APIGatewayProxyResponse()
26 | {
27 | StatusCode = 200,
28 | Headers = new Dictionary() { {"Context-Type", "text/html"} },
29 | Body = "OK"
30 | };
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Handlers/Handlers.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netcoreapp2.0
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Always
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Serverless.Microservice.Bootstrap.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26730.10
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9D4D35B5-177A-439F-AAAA-AF29F41BD49B}"
7 | ProjectSection(SolutionItems) = preProject
8 | .travis.yml = .travis.yml
9 | build.ps1 = build.ps1
10 | build.sh = build.sh
11 | deploy.sh = deploy.sh
12 | README.md = README.md
13 | serverless.yml = serverless.yml
14 | EndProjectSection
15 | EndProject
16 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Handlers", "Handlers\Handlers.csproj", "{D2124DA5-1A70-4485-BDC2-D554A6283A06}"
17 | EndProject
18 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{8C0FD11D-C0B4-4AE7-B627-B14D074D1788}"
19 | EndProject
20 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Domain", "DomainService\Domain.csproj", "{16ADD706-F580-4ED0-A3AD-3DD40255C3F3}"
21 | EndProject
22 | Global
23 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
24 | Debug|Any CPU = Debug|Any CPU
25 | Release|Any CPU = Release|Any CPU
26 | EndGlobalSection
27 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
28 | {D2124DA5-1A70-4485-BDC2-D554A6283A06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29 | {D2124DA5-1A70-4485-BDC2-D554A6283A06}.Debug|Any CPU.Build.0 = Debug|Any CPU
30 | {D2124DA5-1A70-4485-BDC2-D554A6283A06}.Release|Any CPU.ActiveCfg = Release|Any CPU
31 | {D2124DA5-1A70-4485-BDC2-D554A6283A06}.Release|Any CPU.Build.0 = Release|Any CPU
32 | {8C0FD11D-C0B4-4AE7-B627-B14D074D1788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33 | {8C0FD11D-C0B4-4AE7-B627-B14D074D1788}.Debug|Any CPU.Build.0 = Debug|Any CPU
34 | {8C0FD11D-C0B4-4AE7-B627-B14D074D1788}.Release|Any CPU.ActiveCfg = Release|Any CPU
35 | {8C0FD11D-C0B4-4AE7-B627-B14D074D1788}.Release|Any CPU.Build.0 = Release|Any CPU
36 | {16ADD706-F580-4ED0-A3AD-3DD40255C3F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
37 | {16ADD706-F580-4ED0-A3AD-3DD40255C3F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
38 | {16ADD706-F580-4ED0-A3AD-3DD40255C3F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
39 | {16ADD706-F580-4ED0-A3AD-3DD40255C3F3}.Release|Any CPU.Build.0 = Release|Any CPU
40 | EndGlobalSection
41 | GlobalSection(SolutionProperties) = preSolution
42 | HideSolutionNode = FALSE
43 | EndGlobalSection
44 | GlobalSection(ExtensibilityGlobals) = postSolution
45 | SolutionGuid = {F5B69645-B0B9-4557-A722-A476D67F90D0}
46 | EndGlobalSection
47 | EndGlobal
48 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Serverless Microservice Bootstrap
2 |
3 | [](http://www.serverless.com)
4 | [](https://travis-ci.org/PageUpPeopleOrg/serverless-microservice-bootstrap)
5 |
6 | This is a serverless framework template project for creating microservices using microsoft dotnet core.
7 |
8 | ## Getting Started
9 |
10 | Make sure you have the [Serverless Framework](http://www.serverless.com) installed.
11 | ```
12 | npm install serverless -g
13 | ```
14 |
15 | Install dotnet core on your machine. Instructions can be found at [dotnet website](https://www.microsoft.com/net/download)
16 |
17 |
18 | ## Build
19 |
20 | Run the following command in powershell to build the project.
21 | ```
22 | build.ps1
23 | ```
24 |
25 | Use the following command for bash.
26 | ```
27 | ./build.sh
28 | ```
29 |
30 | ## Test
31 | To run unit tests
32 | ```
33 | dotnet test .\src\Tests
34 | ```
35 |
36 | ## Deploy
37 |
38 | ### Continous deployment with Travis
39 | The repository is configured for continous deployment with Travis. Refer to the include `.travis.yml` file.
40 | For the purpose of templating, deployment section has been commented out. Please uncomment the following lines in `.travis.yml`.
41 |
42 | ```
43 | deploy:
44 | - provider: script
45 | skip_cleanup: true
46 | script: "./deploy.sh"
47 | on:
48 | branch: master
49 | ```
50 |
51 | ### To deploy from the command line
52 | Use the following command to deploy from the command line tool
53 | ```
54 | serverless deploy
55 | ```
56 |
57 | #### Expected serverless output
58 | ```
59 | λ serverless deploy
60 | Serverless: Packaging service...
61 | Serverless: Uploading CloudFormation file to S3...
62 | Serverless: Uploading artifacts...
63 | Serverless: Validating template...
64 | Serverless: Updating Stack...
65 | Serverless: Checking Stack update progress...
66 | ....................
67 | Serverless: Stack update finished...
68 | Service Information
69 | service: serverless-microservice-bootstrap
70 | stage: v1
71 | region: ap-southeast-2
72 | stack: serverless-microservice-bootstrap-v1
73 | api keys:
74 | None
75 | endpoints:
76 | GET - https://xxxxxxxx.execute-api.ap-southeast-2.amazonaws.com/v1/healthcheck
77 | functions:
78 | hello: serverless-microservice-bootstrap-v1-hello
79 | healthcheck: serverless-microservice-bootstrap-v1-healthcheck
80 | ```
81 |
82 | #### Test the deployment
83 |
84 | Bootstrap includes a healthcheck endpoint for which the get endpoint will be written console, refer to the deploy output above. A simple curl command like below should verify the deployment.
85 |
86 | ``curl -i https://xxxxxxxx.execute-api.ap-southeast-2.amazonaws.com/v1/healthcheck``
87 |
88 | *Output should be similar to*
89 |
90 | ```
91 | HTTP/2 200
92 | content-type: application/json
93 | content-length: 2
94 | date: Wed, 10 Jan 2018 15:19:02 GMT
95 | x-amzn-requestid: 95b5bc4a-f619-11e7-8866-43a29ca1cc05
96 | context-type: text/html
97 | x-amzn-trace-id: sampled=0;root=1-5a562ee4-4453904d7fcc88f425547103
98 | x-cache: Miss from cloudfront
99 | via: 1.1 9edc66051886b13f4d282ea125622e34.cloudfront.net (CloudFront)
100 | x-amz-cf-id: eXe9WCo_Kf3futXvyNcHlGGtZ0Yz1X3OxXfxf8XhNweeC-NsDvBomQ==
101 |
102 | OK
103 |
104 | ```
105 |
106 |
107 | #### Removing after testing
108 | If you are playing around, remember to remove the serverless stack after testing using the following command.
109 |
110 | ``serverless remove``
111 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 |
24 | # Visual Studio 2015 cache/options directory
25 | .vs/
26 | # Uncomment if you have tasks that create the project's static files in wwwroot
27 | #wwwroot/
28 |
29 | # MSTest test Results
30 | [Tt]est[Rr]esult*/
31 | [Bb]uild[Ll]og.*
32 |
33 | # NUNIT
34 | *.VisualState.xml
35 | TestResult.xml
36 |
37 | # Build Results of an ATL Project
38 | [Dd]ebugPS/
39 | [Rr]eleasePS/
40 | dlldata.c
41 |
42 | # DNX
43 | project.lock.json
44 | artifacts/
45 |
46 | *_i.c
47 | *_p.c
48 | *_i.h
49 | *.ilk
50 | *.meta
51 | *.obj
52 | *.pch
53 | *.pdb
54 | *.pgc
55 | *.pgd
56 | *.rsp
57 | *.sbr
58 | *.tlb
59 | *.tli
60 | *.tlh
61 | *.tmp
62 | *.tmp_proj
63 | *.log
64 | *.vspscc
65 | *.vssscc
66 | .builds
67 | *.pidb
68 | *.svclog
69 | *.scc
70 |
71 | # Chutzpah Test files
72 | _Chutzpah*
73 |
74 | # Visual C++ cache files
75 | ipch/
76 | *.aps
77 | *.ncb
78 | *.opendb
79 | *.opensdf
80 | *.sdf
81 | *.cachefile
82 |
83 | # Visual Studio profiler
84 | *.psess
85 | *.vsp
86 | *.vspx
87 | *.sap
88 |
89 | # TFS 2012 Local Workspace
90 | $tf/
91 |
92 | # Guidance Automation Toolkit
93 | *.gpState
94 |
95 | # ReSharper is a .NET coding add-in
96 | _ReSharper*/
97 | *.[Rr]e[Ss]harper
98 | *.DotSettings.user
99 |
100 | # JustCode is a .NET coding add-in
101 | .JustCode
102 |
103 | # TeamCity is a build add-in
104 | _TeamCity*
105 |
106 | # DotCover is a Code Coverage Tool
107 | *.dotCover
108 |
109 | # NCrunch
110 | _NCrunch_*
111 | .*crunch*.local.xml
112 | nCrunchTemp_*
113 |
114 | # MightyMoose
115 | *.mm.*
116 | AutoTest.Net/
117 |
118 | # Web workbench (sass)
119 | .sass-cache/
120 |
121 | # Installshield output folder
122 | [Ee]xpress/
123 |
124 | # DocProject is a documentation generator add-in
125 | DocProject/buildhelp/
126 | DocProject/Help/*.HxT
127 | DocProject/Help/*.HxC
128 | DocProject/Help/*.hhc
129 | DocProject/Help/*.hhk
130 | DocProject/Help/*.hhp
131 | DocProject/Help/Html2
132 | DocProject/Help/html
133 |
134 | # Click-Once directory
135 | publish/
136 |
137 | # Publish Web Output
138 | *.[Pp]ublish.xml
139 | *.azurePubxml
140 | # TODO: Comment the next line if you want to checkin your web deploy settings
141 | # but database connection strings (with potential passwords) will be unencrypted
142 | *.pubxml
143 | *.publishproj
144 |
145 | # NuGet Packages
146 | *.nupkg
147 | # The packages folder can be ignored because of Package Restore
148 | **/packages/*
149 | # except build/, which is used as an MSBuild target.
150 | !**/packages/build/
151 | # Uncomment if necessary however generally it will be regenerated when needed
152 | #!**/packages/repositories.config
153 | # NuGet v3's project.json files produces more ignoreable files
154 | *.nuget.props
155 | *.nuget.targets
156 |
157 | # Microsoft Azure Build Output
158 | csx/
159 | *.build.csdef
160 |
161 | # Microsoft Azure Emulator
162 | ecf/
163 | rcf/
164 |
165 | # Microsoft Azure ApplicationInsights config file
166 | ApplicationInsights.config
167 |
168 | # Windows Store app package directory
169 | AppPackages/
170 | BundleArtifacts/
171 |
172 | # Visual Studio cache files
173 | # files ending in .cache can be ignored
174 | *.[Cc]ache
175 | # but keep track of directories ending in .cache
176 | !*.[Cc]ache/
177 |
178 | # Others
179 | ClientBin/
180 | ~$*
181 | *~
182 | *.dbmdl
183 | *.dbproj.schemaview
184 | *.pfx
185 | *.publishsettings
186 | node_modules/
187 | orleans.codegen.cs
188 |
189 | # RIA/Silverlight projects
190 | Generated_Code/
191 |
192 | # Backup & report files from converting an old project file
193 | # to a newer Visual Studio version. Backup files are not needed,
194 | # because we have git ;-)
195 | _UpgradeReport_Files/
196 | Backup*/
197 | UpgradeLog*.XML
198 | UpgradeLog*.htm
199 |
200 | # SQL Server files
201 | *.mdf
202 | *.ldf
203 |
204 | # Business Intelligence projects
205 | *.rdl.data
206 | *.bim.layout
207 | *.bim_*.settings
208 |
209 | # Microsoft Fakes
210 | FakesAssemblies/
211 |
212 | # GhostDoc plugin setting file
213 | *.GhostDoc.xml
214 |
215 | # Node.js Tools for Visual Studio
216 | .ntvs_analysis.dat
217 |
218 | # Visual Studio 6 build log
219 | *.plg
220 |
221 | # Visual Studio 6 workspace options file
222 | *.opt
223 |
224 | # Visual Studio LightSwitch build output
225 | **/*.HTMLClient/GeneratedArtifacts
226 | **/*.DesktopClient/GeneratedArtifacts
227 | **/*.DesktopClient/ModelManifest.xml
228 | **/*.Server/GeneratedArtifacts
229 | **/*.Server/ModelManifest.xml
230 | _Pvt_Extensions
231 |
232 | # Paket dependency manager
233 | .paket/paket.exe
234 |
235 | # FAKE - F# Make
236 | .fake/
237 | *.orig
238 |
239 | # macOS
240 | .DS_Store
241 |
242 | # JetBrains Rider C# IDE
243 | .idea*
244 |
245 | # Serverless directories
246 | .serverless
247 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 |
24 | # Visual Studio 2015 cache/options directory
25 | .vs/
26 | # Uncomment if you have tasks that create the project's static files in wwwroot
27 | #wwwroot/
28 |
29 | # MSTest test Results
30 | [Tt]est[Rr]esult*/
31 | [Bb]uild[Ll]og.*
32 |
33 | # NUNIT
34 | *.VisualState.xml
35 | TestResult.xml
36 |
37 | # Build Results of an ATL Project
38 | [Dd]ebugPS/
39 | [Rr]eleasePS/
40 | dlldata.c
41 |
42 | # DNX
43 | project.lock.json
44 | artifacts/
45 |
46 | *_i.c
47 | *_p.c
48 | *_i.h
49 | *.ilk
50 | *.meta
51 | *.obj
52 | *.pch
53 | *.pdb
54 | *.pgc
55 | *.pgd
56 | *.rsp
57 | *.sbr
58 | *.tlb
59 | *.tli
60 | *.tlh
61 | *.tmp
62 | *.tmp_proj
63 | *.log
64 | *.vspscc
65 | *.vssscc
66 | .builds
67 | *.pidb
68 | *.svclog
69 | *.scc
70 |
71 | # Chutzpah Test files
72 | _Chutzpah*
73 |
74 | # Visual C++ cache files
75 | ipch/
76 | *.aps
77 | *.ncb
78 | *.opendb
79 | *.opensdf
80 | *.sdf
81 | *.cachefile
82 |
83 | # Visual Studio profiler
84 | *.psess
85 | *.vsp
86 | *.vspx
87 | *.sap
88 |
89 | # TFS 2012 Local Workspace
90 | $tf/
91 |
92 | # Guidance Automation Toolkit
93 | *.gpState
94 |
95 | # ReSharper is a .NET coding add-in
96 | _ReSharper*/
97 | *.[Rr]e[Ss]harper
98 | *.DotSettings.user
99 |
100 | # JustCode is a .NET coding add-in
101 | .JustCode
102 |
103 | # TeamCity is a build add-in
104 | _TeamCity*
105 |
106 | # DotCover is a Code Coverage Tool
107 | *.dotCover
108 |
109 | # NCrunch
110 | _NCrunch_*
111 | .*crunch*.local.xml
112 | nCrunchTemp_*
113 |
114 | # MightyMoose
115 | *.mm.*
116 | AutoTest.Net/
117 |
118 | # Web workbench (sass)
119 | .sass-cache/
120 |
121 | # Installshield output folder
122 | [Ee]xpress/
123 |
124 | # DocProject is a documentation generator add-in
125 | DocProject/buildhelp/
126 | DocProject/Help/*.HxT
127 | DocProject/Help/*.HxC
128 | DocProject/Help/*.hhc
129 | DocProject/Help/*.hhk
130 | DocProject/Help/*.hhp
131 | DocProject/Help/Html2
132 | DocProject/Help/html
133 |
134 | # Click-Once directory
135 | publish/
136 |
137 | # Publish Web Output
138 | *.[Pp]ublish.xml
139 | *.azurePubxml
140 | # TODO: Comment the next line if you want to checkin your web deploy settings
141 | # but database connection strings (with potential passwords) will be unencrypted
142 | *.pubxml
143 | *.publishproj
144 |
145 | # NuGet Packages
146 | *.nupkg
147 | # The packages folder can be ignored because of Package Restore
148 | **/packages/*
149 | # except build/, which is used as an MSBuild target.
150 | !**/packages/build/
151 | # Uncomment if necessary however generally it will be regenerated when needed
152 | #!**/packages/repositories.config
153 | # NuGet v3's project.json files produces more ignoreable files
154 | *.nuget.props
155 | *.nuget.targets
156 |
157 | # Microsoft Azure Build Output
158 | csx/
159 | *.build.csdef
160 |
161 | # Microsoft Azure Emulator
162 | ecf/
163 | rcf/
164 |
165 | # Microsoft Azure ApplicationInsights config file
166 | ApplicationInsights.config
167 |
168 | # Windows Store app package directory
169 | AppPackages/
170 | BundleArtifacts/
171 |
172 | # Visual Studio cache files
173 | # files ending in .cache can be ignored
174 | *.[Cc]ache
175 | # but keep track of directories ending in .cache
176 | !*.[Cc]ache/
177 |
178 | # Others
179 | ClientBin/
180 | ~$*
181 | *~
182 | *.dbmdl
183 | *.dbproj.schemaview
184 | *.pfx
185 | *.publishsettings
186 | node_modules/
187 | orleans.codegen.cs
188 |
189 | # RIA/Silverlight projects
190 | Generated_Code/
191 |
192 | # Backup & report files from converting an old project file
193 | # to a newer Visual Studio version. Backup files are not needed,
194 | # because we have git ;-)
195 | _UpgradeReport_Files/
196 | Backup*/
197 | UpgradeLog*.XML
198 | UpgradeLog*.htm
199 |
200 | # SQL Server files
201 | *.mdf
202 | *.ldf
203 |
204 | # Business Intelligence projects
205 | *.rdl.data
206 | *.bim.layout
207 | *.bim_*.settings
208 |
209 | # Microsoft Fakes
210 | FakesAssemblies/
211 |
212 | # GhostDoc plugin setting file
213 | *.GhostDoc.xml
214 |
215 | # Node.js Tools for Visual Studio
216 | .ntvs_analysis.dat
217 |
218 | # Visual Studio 6 build log
219 | *.plg
220 |
221 | # Visual Studio 6 workspace options file
222 | *.opt
223 |
224 | # Visual Studio LightSwitch build output
225 | **/*.HTMLClient/GeneratedArtifacts
226 | **/*.DesktopClient/GeneratedArtifacts
227 | **/*.DesktopClient/ModelManifest.xml
228 | **/*.Server/GeneratedArtifacts
229 | **/*.Server/ModelManifest.xml
230 | _Pvt_Extensions
231 |
232 | # Paket dependency manager
233 | .paket/paket.exe
234 |
235 | # FAKE - F# Make
236 | .fake/
237 | *.orig
238 |
239 | # macOS
240 | .DS_Store
241 |
242 | # JetBrains Rider C# IDE
243 | .idea*
244 |
245 | # Serverless directories
246 | .serverless
247 |
248 | # Visual Studio Code
249 | .vscode
250 |
251 |
--------------------------------------------------------------------------------