Add GitHub Actions configuration (#201)

* new build system based on NUKE build
* support test running on Linux
This commit is contained in:
Marko Lahma
2021-08-02 17:54:41 +03:00
committed by GitHub
parent 9d7325bd67
commit ca2bf1e889
100 changed files with 1147 additions and 53007 deletions

27
.gitattributes vendored Normal file
View File

@@ -0,0 +1,27 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
# make sure *nix stays *nix
*.sh eol=lf
*.conf eol=lf
dotnet-test-nunit eol=lf

41
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: ci
on:
push:
branches:
- main
paths-ignore:
- 'doc/**'
- '*.md'
pull_request:
branches:
- main
paths-ignore:
- 'doc/**'
- '*.md'
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Run './build.cmd ci'
run: ./build.cmd ci
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run './build.cmd ci'
run: ./build.sh ci
publish:
runs-on: ubuntu-latest
needs: [ build-windows, build-linux ]
steps:
- uses: actions/checkout@v2
- name: Publish
run: ./build.sh publish
env:
NuGetApiKey: ${{ secrets.NUGET_API_KEY }}

39
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: Publish
on:
push:
tags:
- 'v*.*.*'
jobs:
build:
runs-on: ubuntu-latest
env:
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: 1
steps:
- name: Checkout source code
uses: actions/checkout@v2
- name: Setup dotnet 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 2.1.*
- name: Setup dotnet 3.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.*
- name: Setup dotnet 5.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.*
- name: Test
run: ./build.cmd ci test pack
- name: Push with dotnet
run: dotnet nuget push artifacts/*.*nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json

1
.gitignore vendored
View File

@@ -87,3 +87,4 @@ PrecompiledWeb
project.lock.json
BenchmarkDotNet.Artifacts*
/artifacts

155
.nuke/build.schema.json Normal file
View File

@@ -0,0 +1,155 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Build Schema",
"$ref": "#/definitions/build",
"definitions": {
"build": {
"type": "object",
"properties": {
"BuildEms": {
"type": "boolean",
"description": "Build EMS"
},
"Configuration": {
"type": "string",
"description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
"enum": [
"Debug",
"Release"
]
},
"Continue": {
"type": "boolean",
"description": "Indicates to continue a previously failed build attempt"
},
"Help": {
"type": "boolean",
"description": "Shows the help text for this build assembly"
},
"Host": {
"type": "string",
"description": "Host for execution. Default is 'automatic'",
"enum": [
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitrise",
"GitHubActions",
"GitLab",
"Jenkins",
"Rider",
"SpaceAutomation",
"TeamCity",
"Terminal",
"TravisCI",
"VisualStudio",
"VSCode"
]
},
"NoLogo": {
"type": "boolean",
"description": "Disables displaying the NUKE logo"
},
"NuGetApiKey": {
"type": "string",
"default": "Secrets must be entered via 'nuke :secret [profile]'"
},
"NuGetSource": {
"type": "string"
},
"Partition": {
"type": "string",
"description": "Partition to use on CI"
},
"Plan": {
"type": "boolean",
"description": "Shows the execution plan (HTML)"
},
"Profile": {
"type": "array",
"description": "Defines the profiles to load",
"items": {
"type": "string"
}
},
"ProjectVersion": {
"type": "string",
"description": "Version"
},
"Root": {
"type": "string",
"description": "Root directory during build execution"
},
"Skip": {
"type": "array",
"description": "List of targets to be skipped. Empty list skips all dependencies",
"items": {
"type": "string",
"enum": [
"Antlr",
"Ci",
"Clean",
"Compile",
"CompileExamples",
"CompileSolution",
"Pack",
"PackBinaries",
"Publish",
"Restore",
"Test"
]
}
},
"Solution": {
"type": "string",
"description": "Path to a solution file that is automatically loaded"
},
"Target": {
"type": "array",
"description": "List of targets to be invoked. Default is '{default_target}'",
"items": {
"type": "string",
"enum": [
"Antlr",
"Ci",
"Clean",
"Compile",
"CompileExamples",
"CompileSolution",
"Pack",
"PackBinaries",
"Publish",
"Restore",
"Test"
]
}
},
"TestFull": {
"type": "boolean"
},
"TestIntegrationData": {
"type": "boolean"
},
"TestIntegrationEms": {
"type": "boolean"
},
"TestIntegrationMsMq": {
"type": "boolean"
},
"TestIntegrationNms": {
"type": "boolean"
},
"Verbosity": {
"type": "string",
"description": "Logging verbosity during build execution. Default is 'Normal'",
"enum": [
"Minimal",
"Normal",
"Quiet",
"Verbose"
]
}
}
}
}
}

4
.nuke/parameters.json Normal file
View File

@@ -0,0 +1,4 @@
{
"$schema": "./build.schema.json",
"Solution": "Spring.Net.sln"
}

View File

@@ -1,23 +0,0 @@
@echo off
cd build-support
call set-nant-config-per-processor-architecture.cmd
cd ..
@echo .
@echo ..
@echo ...
@echo Running full Build Script, capturing output to buildlog.txt file...
@echo Start Time: %time%
build-support\tools\nant\bin\nant -D:test.withcoverage=false %1 %2 %3 %4 %5 %6 %7 %8 %9 > buildlog.txt
@echo .
@echo ..
@echo ...
@echo Launching text file viewer to display buildlog.txt contents...
start "ignored but required placeholder window title argument" buildlog.txt
@echo .
@echo ..
@echo ...
@echo ************************
@echo Build Complete!
@echo ************************
@echo End Time: %time%
@echo   

View File

@@ -166,29 +166,7 @@ Documented sample applications can be found in "examples":
VS.NET
------
Visual Studio 2017 is required to open and build the solution. The free community version of Visual Studio should suffice.
For the first time you need to execute `Build.cmd` which will generate `GenCommonAssemblyInfo.cs` file required for builds.
NAnt
----
Build scripts are delivered with the download package.
To build the source and run the unit tests type
build test
If you want to run the build to create strongly signed assemblies you can generate a key file by executing the following command (assuming that sn.exe is properly on your search path):
sn -k Spring.Net.snk
You need to place the Spring.NET.snk file into the root folder of the source tree. All builds are strongly named using this key file when executing the following nant command:
nant -D:project.build.sign=true
InnovaSys Document X! is used to generate the SDK documentation.
Visual Studio 2019 is required to open and build the solution. The free community version of Visual Studio should suffice.
## 8. Support

View File

@@ -1,17 +1,19 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.25807.0
# Visual Studio Version 17
VisualStudioVersion = 17.0.31410.414
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F04753EF-7A1B-4837-AB63-8C0821E8155D}"
ProjectSection(SolutionItems) = preProject
BreakingChanges.txt = BreakingChanges.txt
changelog.txt = changelog.txt
common-project.include = common-project.include
src\Directory.Build.props = src\Directory.Build.props
Local.testsettings = Local.testsettings
README.md = README.md
Spring.build = Spring.build
Spring.include = Spring.include
README.md = README.md
global.json = global.json
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{79F495DF-83D6-435E-A20E-47800F6F8FE7}"
@@ -87,458 +89,202 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Template.Velocity.Ca
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Template.Velocity.Castle.Tests", "test\Spring\Spring.Template.Velocity.Castle.Tests\Spring.Template.Velocity.Castle.Tests.csproj", "{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate5", "src\Spring\Spring.Data.NHibernate5\Spring.Data.NHibernate5.csproj", "{26604974-B6B8-45BA-A72A-66574ADC498B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Data.NHibernate5", "src\Spring\Spring.Data.NHibernate5\Spring.Data.NHibernate5.csproj", "{26604974-B6B8-45BA-A72A-66574ADC498B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate5.Integration.Tests", "test\Spring\Spring.Data.NHibernate5.Integration.Tests\Spring.Data.NHibernate5.Integration.Tests.csproj", "{740CDA28-39BC-455A-86C3-5323D14F5B2E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Data.NHibernate5.Integration.Tests", "test\Spring\Spring.Data.NHibernate5.Integration.Tests\Spring.Data.NHibernate5.Integration.Tests.csproj", "{740CDA28-39BC-455A-86C3-5323D14F5B2E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Data.NHibernate5.NestedTxSuspension.Integration.Tests", "test\Spring\Spring.Data.NHibernate5.NestedTxSuspension.Integration.Tests\Spring.Data.NHibernate5.NestedTxSuspension.Integration.Tests.csproj", "{DE276F7C-4564-49EC-AABC-B964EC3D1626}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Data.NHibernate5.Tests", "test\Spring\Spring.Data.NHibernate5.Tests\Spring.Data.NHibernate5.Tests.csproj", "{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Data.NHibernate5.Tests", "test\Spring\Spring.Data.NHibernate5.Tests\Spring.Data.NHibernate5.Tests.csproj", "{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Benchmark", "test\Spring\Spring.Benchmark\Spring.Benchmark.csproj", "{504F1D7B-C6AC-4128-9411-D680B3086662}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spring.Benchmark", "test\Spring\Spring.Benchmark\Spring.Benchmark.csproj", "{504F1D7B-C6AC-4128-9411-D680B3086662}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{9537C677-ADE5-4503-AFD7-3E0C3B0960EB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build-support\nuke-build\_build.csproj", "{0D135B50-2B59-44C1-941A-32B5EC798C88}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{C0BAC5A1-AC38-4D36-BE28-F5A74BD9FECD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{76CA894B-7F4F-4F5B-8EFD-FF5253C6FCCE}"
ProjectSection(SolutionItems) = preProject
.github\workflows\ci.yml = .github\workflows\ci.yml
.github\workflows\publish.yml = .github\workflows\publish.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Release|.NET = Release|.NET
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|.NET.ActiveCfg = Debug|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|.NET.Build.0 = Debug|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Any CPU.Build.0 = Debug|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|.NET.ActiveCfg = Release|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|.NET.Build.0 = Release|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Any CPU.ActiveCfg = Release|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Any CPU.Build.0 = Release|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{710961A3-0DF4-49E4-A26E-F5B9C044AC84}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|.NET.ActiveCfg = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|.NET.Build.0 = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Release|.NET.ActiveCfg = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Release|.NET.Build.0 = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Release|Any CPU.Build.0 = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|.NET.ActiveCfg = Debug|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|.NET.Build.0 = Debug|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|.NET.ActiveCfg = Release|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|.NET.Build.0 = Release|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Any CPU.Build.0 = Release|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Debug|.NET.ActiveCfg = Debug|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Debug|.NET.Build.0 = Debug|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Release|.NET.ActiveCfg = Release|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Release|.NET.Build.0 = Release|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Release|Any CPU.Build.0 = Release|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2111596A-0327-4C9D-8919-294FBD988A23}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Debug|.NET.ActiveCfg = Debug|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Debug|.NET.Build.0 = Debug|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Release|.NET.ActiveCfg = Release|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Release|.NET.Build.0 = Release|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Release|Any CPU.Build.0 = Release|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Debug|.NET.ActiveCfg = Debug|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Debug|.NET.Build.0 = Debug|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Release|.NET.ActiveCfg = Release|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Release|.NET.Build.0 = Release|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Release|Any CPU.Build.0 = Release|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{4374F018-9738-46BF-A399-4594CEE75B21}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Debug|.NET.ActiveCfg = Debug|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Debug|.NET.Build.0 = Debug|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Release|.NET.ActiveCfg = Release|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Release|.NET.Build.0 = Release|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Release|Any CPU.Build.0 = Release|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{BA4789EB-281A-48EA-8763-28B9F0596A18}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Debug|.NET.ActiveCfg = Debug|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Debug|.NET.Build.0 = Debug|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Release|.NET.ActiveCfg = Release|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Release|.NET.Build.0 = Release|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Release|Any CPU.Build.0 = Release|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{C67E47AA-1ACD-41B4-A465-4D336A2319CA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|.NET.ActiveCfg = Debug|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|.NET.Build.0 = Debug|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|.NET.ActiveCfg = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|.NET.Build.0 = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Any CPU.Build.0 = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Debug|.NET.ActiveCfg = Debug|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Debug|.NET.Build.0 = Debug|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Release|.NET.ActiveCfg = Release|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Release|.NET.Build.0 = Release|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Release|Any CPU.Build.0 = Release|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{ACD39D47-1811-40FA-9E7E-5DEA5B9CE6C0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Debug|.NET.ActiveCfg = Debug|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Debug|.NET.Build.0 = Debug|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Release|.NET.ActiveCfg = Release|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Release|.NET.Build.0 = Release|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Release|Any CPU.Build.0 = Release|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{91766D21-C568-459F-9BEA-759B011F23CF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Debug|.NET.Build.0 = Debug|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Release|.NET.ActiveCfg = Release|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Release|.NET.Build.0 = Release|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Release|Any CPU.Build.0 = Release|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E5E287D2-EE2C-4C99-87CA-EB27B35ABF7B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Debug|.NET.ActiveCfg = Debug|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Debug|.NET.Build.0 = Debug|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Release|.NET.ActiveCfg = Release|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Release|.NET.Build.0 = Release|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Release|Any CPU.Build.0 = Release|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{ED204A7B-832F-44C7-BFE3-504AEBE1BCC8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Debug|.NET.ActiveCfg = Debug|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Debug|.NET.Build.0 = Debug|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Release|.NET.ActiveCfg = Release|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Release|.NET.Build.0 = Release|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Release|Any CPU.Build.0 = Release|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{4D6D616B-7643-4D6B-8E5E-14ECFDB9AF82}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Debug|.NET.ActiveCfg = Debug|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Release|.NET.ActiveCfg = Release|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Release|Any CPU.Build.0 = Release|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{AEB1578C-9018-4D49-B440-789F38DD2F29}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Debug|.NET.ActiveCfg = Debug|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Release|.NET.ActiveCfg = Release|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Release|Any CPU.Build.0 = Release|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{FA7A6931-7DBE-4A32-A312-51FAD2E80332}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|.NET.ActiveCfg = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|.NET.ActiveCfg = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Any CPU.Build.0 = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0E23AE41-D8D8-41C2-84A2-D35564049F0D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|.NET.ActiveCfg = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|.NET.ActiveCfg = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Any CPU.Build.0 = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{41BC3AEA-7EB3-48BF-B1EC-84119376AC98}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Debug|.NET.ActiveCfg = Debug|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Release|.NET.ActiveCfg = Release|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Release|Any CPU.Build.0 = Release|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{BF3AB954-8375-407C-9E98-4C51D8072784}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Debug|.NET.ActiveCfg = Debug|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Release|.NET.ActiveCfg = Release|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Release|Any CPU.Build.0 = Release|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{10405837-CB67-40D8-9326-84C9383983E2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Debug|.NET.ActiveCfg = Debug|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Release|.NET.ActiveCfg = Release|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Release|Any CPU.Build.0 = Release|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{2E10A8D3-B8FF-4699-90B8-E621659C58DD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Debug|.NET.ActiveCfg = Debug|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Release|.NET.ActiveCfg = Release|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Release|Any CPU.Build.0 = Release|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7321149A-47C6-4FBA-9D1A-26FD6815381B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{900E3839-301E-48B1-BAEB-B6645620ACFF}.Debug|.NET.ActiveCfg = Debug|Any CPU
{900E3839-301E-48B1-BAEB-B6645620ACFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{900E3839-301E-48B1-BAEB-B6645620ACFF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{900E3839-301E-48B1-BAEB-B6645620ACFF}.Release|.NET.ActiveCfg = Release|Any CPU
{900E3839-301E-48B1-BAEB-B6645620ACFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{900E3839-301E-48B1-BAEB-B6645620ACFF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Release|.NET.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Release|Any CPU.Build.0 = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E823D54C-CE82-4868-929F-5F95A999F123}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|.NET.ActiveCfg = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|Any CPU.Build.0 = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|.NET.ActiveCfg = Release|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|Any CPU.ActiveCfg = Release|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|Any CPU.Build.0 = Release|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Debug|.NET.ActiveCfg = Debug|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Release|.NET.ActiveCfg = Release|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|.NET.ActiveCfg = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|.NET.ActiveCfg = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|Any CPU.Build.0 = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Debug|.NET.ActiveCfg = Debug|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Release|.NET.ActiveCfg = Release|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Release|Any CPU.Build.0 = Release|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8CF0F34A-CC93-4D87-AE14-A2DEEF072F26}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Debug|.NET.ActiveCfg = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Debug|Any CPU.Build.0 = Debug|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|Any CPU.ActiveCfg = Release|Any CPU
{247787CF-ECE1-4675-8B42-7DF4329A4891}.Release|Any CPU.Build.0 = Release|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FA934E92-C8C2-428A-BE2A-26818F17A787}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5323AC8-137E-4EF7-BC62-3BD6FC0576CD}.Release|Any CPU.Build.0 = Release|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Release|.NET.ActiveCfg = Release|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Release|Any CPU.Build.0 = Release|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CF375928-B6D5-485C-B04D-2BC41D9DBF1E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Debug|.NET.ActiveCfg = Debug|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|.NET.ActiveCfg = Release|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Any CPU.Build.0 = Release|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|.NET.ActiveCfg = Debug|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|.NET.ActiveCfg = Release|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Any CPU.Build.0 = Release|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|.NET.ActiveCfg = Debug|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Release|.NET.ActiveCfg = Release|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Any CPU.Build.0 = Release|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Debug|.NET.ActiveCfg = Debug|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Release|.NET.ActiveCfg = Release|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Release|Any CPU.Build.0 = Release|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{250601C0-A4AC-41FE-B484-51A9B0D5473D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Debug|.NET.ActiveCfg = Debug|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Release|.NET.ActiveCfg = Release|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Release|Any CPU.Build.0 = Release|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{8D6ED392-8A1F-41C0-A765-22CF384EDEA1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|.NET.ActiveCfg = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|.NET.ActiveCfg = Release|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|Any CPU.Build.0 = Release|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Debug|.NET.ActiveCfg = Debug|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Debug|.NET.Build.0 = Debug|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Release|.NET.ActiveCfg = Release|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Release|.NET.Build.0 = Release|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Release|Any CPU.Build.0 = Release|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{26604974-B6B8-45BA-A72A-66574ADC498B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Debug|.NET.ActiveCfg = Debug|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Debug|.NET.Build.0 = Debug|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Release|.NET.ActiveCfg = Release|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Release|.NET.Build.0 = Release|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Release|Any CPU.Build.0 = Release|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{740CDA28-39BC-455A-86C3-5323D14F5B2E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Debug|.NET.ActiveCfg = Debug|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Debug|.NET.Build.0 = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE276F7C-4564-49EC-AABC-B964EC3D1626}.Release|Any CPU.Build.0 = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Release|.NET.ActiveCfg = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Release|.NET.Build.0 = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Release|Any CPU.Build.0 = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{BEEBC49B-4519-4C77-AE93-11E68F4CA7E3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Debug|.NET.ActiveCfg = Debug|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Debug|.NET.Build.0 = Debug|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Debug|Any CPU.Build.0 = Debug|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Release|.NET.ActiveCfg = Release|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Release|.NET.Build.0 = Release|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Release|Any CPU.ActiveCfg = Release|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Release|Any CPU.Build.0 = Release|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{504F1D7B-C6AC-4128-9411-D680B3086662}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0D135B50-2B59-44C1-941A-32B5EC798C88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D135B50-2B59-44C1-941A-32B5EC798C88}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{504F1D7B-C6AC-4128-9411-D680B3086662} = {9537C677-ADE5-4503-AFD7-3E0C3B0960EB}
{C0BAC5A1-AC38-4D36-BE28-F5A74BD9FECD} = {F04753EF-7A1B-4837-AB63-8C0821E8155D}
{76CA894B-7F4F-4F5B-8EFD-FF5253C6FCCE} = {C0BAC5A1-AC38-4D36-BE28-F5A74BD9FECD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {803E6B42-7DEE-4DCC-83D0-51925047BCB0}
NAntAddinLastFileName = Spring.build
SolutionGuid = {803E6B42-7DEE-4DCC-83D0-51925047BCB0}
EndGlobalSection
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = Spring.Net.vsmdi
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{504F1D7B-C6AC-4128-9411-D680B3086662} = {9537C677-ADE5-4503-AFD7-3E0C3B0960EB}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,11 @@
[*.cs]
dotnet_style_qualification_for_field = false:warning
dotnet_style_qualification_for_property = false:warning
dotnet_style_qualification_for_method = false:warning
dotnet_style_qualification_for_event = false:warning
dotnet_style_require_accessibility_modifiers = never:warning
csharp_style_expression_bodied_methods = true:silent
csharp_style_expression_bodied_properties = true:warning
csharp_style_expression_bodied_indexers = true:warning
csharp_style_expression_bodied_accessors = true:warning

View File

@@ -0,0 +1,8 @@
using Nuke.Common;
public partial class Build
{
Target Ci => _ => _
.DependsOn(Compile, Test, Pack)
.Executes();
}

View File

@@ -0,0 +1,43 @@
using System.Collections.Generic;
using Nuke.Common;
using Nuke.Common.Git;
using Nuke.Common.IO;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
public partial class Build
{
[Parameter] string NuGetSource => "https://api.nuget.org/v3/index.json";
[Parameter] [Secret] string NuGetApiKey;
Target Publish => _ => _
.OnlyWhenStatic(() => GitRepository.IsOnMainBranch() || GitRepository.Branch == "github-build")
.DependsOn(Pack)
.Requires(() => NuGetApiKey)
.Executes(() =>
{
DotNetNuGetPush(_ => _
.Apply(PushSettingsBase)
.Apply(PushSettings)
.CombineWith(PushPackageFiles, (_, v) => _
.SetTargetPath(v))
.Apply(PackagePushSettings),
PushDegreeOfParallelism,
PushCompleteOnFailure);
});
Configure<DotNetNuGetPushSettings> PushSettingsBase => _ => _
.SetSource(NuGetSource)
.SetApiKey(NuGetApiKey);
Configure<DotNetNuGetPushSettings> PushSettings => _ => _;
Configure<DotNetNuGetPushSettings> PackagePushSettings => _ => _;
IEnumerable<AbsolutePath> PushPackageFiles => ArtifactsDirectory.GlobFiles("*.nupkg");
bool PushCompleteOnFailure => true;
int PushDegreeOfParallelism => 5;
}

View File

@@ -0,0 +1,59 @@
using System.Linq;
using Nuke.Common;
using Nuke.Common.Tools.DotNet;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
public partial class Build
{
[Parameter]
readonly bool TestFull = false;
[Parameter]
readonly bool TestIntegrationData = false;
[Parameter]
readonly bool TestIntegrationEms = false;
[Parameter]
readonly bool TestIntegrationNms = false;
[Parameter]
readonly bool TestIntegrationMsMq = false;
Target Test => _ => _
.DependsOn(Restore)
.After(Compile)
.Executes(() =>
{
var testTargets = GetActiveProjects()
.Where(x => x.Name.Contains(".Test"))
.Where(x => !x.Name.Contains(".Integration") || TestFull)
.Where(x => !x.Name.Contains("Spring.Web.Conversation.NHibernate5.Tests") || TestFull)
.Where(x => !x.Name.Contains("Spring.Data.Integration.Tests") || TestIntegrationData)
.Where(x => !x.Name.Contains("Spring.Messaging.Tests") || TestIntegrationMsMq || TestFull)
.Where(x => !x.Name.Contains("Spring.Nms.Integration.Tests") || TestIntegrationNms || TestFull)
.Where(x => !x.Name.Contains("Spring.Messaging.Ems.Integration.Tests") || TestIntegrationEms || TestFull)
.Where(x => !x.Name.Contains("Spring.Services.Tests"))
.Where(x => !x.Name.Contains("Spring.Template.Velocity.Castle.Tests") || EnvironmentInfo.IsWin)
.Where(x => !x.Name.Contains("Spring.Template.Velocity.Tests") || EnvironmentInfo.IsWin)
.Where(x => !x.Name.Contains("Spring.Testing.Microsoft.Test") || EnvironmentInfo.IsWin)
.Where(x => !x.Name.Contains("Spring.Web.Tests") || EnvironmentInfo.IsWin)
.Where(x => !x.Name.Contains("Spring.Web.Mvc5.Tests") || EnvironmentInfo.IsWin);
foreach (var project in testTargets)
{
DotNetTest(s =>
{
s = s
.SetProjectFile(project.Path)
.SetConfiguration(Configuration)
.EnableNoRestore();
if (!EnvironmentInfo.IsWin)
{
s = s.SetFramework("net5.0");
}
return s;
});
}
});
}

View File

@@ -0,0 +1,204 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Nuke.Common;
using Nuke.Common.CI;
using Nuke.Common.CI.AppVeyor;
using Nuke.Common.CI.GitHubActions;
using Nuke.Common.Git;
using Nuke.Common.IO;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.MSBuild;
using Nuke.Common.Utilities.Collections;
using static Nuke.Common.IO.FileSystemTasks;
using static Nuke.Common.Tooling.ProcessTasks;
using static Nuke.Common.Tools.DotNet.DotNetTasks;
using static Nuke.Common.Tools.MSBuild.MSBuildTasks;
[ShutdownDotNetAfterServerBuild]
partial class Build : NukeBuild
{
/// Support plugins are available for:
/// - JetBrains ReSharper https://nuke.build/resharper
/// - JetBrains Rider https://nuke.build/rider
/// - Microsoft VisualStudio https://nuke.build/visualstudio
/// - Microsoft VSCode https://nuke.build/vscode
public static int Main () => Execute<Build>(x => x.Compile);
[Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
[Parameter("Build EMS")]
readonly bool BuildEms = false;
[Parameter("Version")]
readonly string ProjectVersion = "3.0.0";
[Solution] readonly Solution Solution;
[GitRepository] readonly GitRepository GitRepository;
[CI] readonly AppVeyor AppVeyor;
[CI] readonly GitHubActions GitHubActions;
AbsolutePath SourceDirectory => RootDirectory / "src";
AbsolutePath TestsDirectory => RootDirectory / "test";
AbsolutePath BuildDirectory => RootDirectory / "build";
AbsolutePath ExamplesDirectory => RootDirectory / "examples";
AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
Target Clean => _ => _
.Before(Restore)
.Executes(() =>
{
ExamplesDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory);
SourceDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory);
TestsDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory);
EnsureCleanDirectory(ArtifactsDirectory);
EnsureCleanDirectory(BuildDirectory);
});
Target Restore => _ => _
.Executes(() =>
{
DotNetRestore(s => s
.SetProjectFile(Solution));
});
Target Compile => _ => _
.DependsOn(CompileSolution, CompileExamples);
Target CompileSolution => _ => _
.DependsOn(Restore)
.Executes(() =>
{
DotNetBuild(s => s
.SetProjectFile(Solution)
.SetConfiguration(Configuration)
.EnableNoRestore()
);
});
Target CompileExamples => _ => _
.OnlyWhenStatic(() => EnvironmentInfo.IsWin)
.DependsOn(CompileSolution, PackBinaries)
.Executes(() =>
{
foreach (var solutionFile in ExamplesDirectory.GlobFiles("**/*.sln"))
{
if (solutionFile.ToString().Contains("Spring.EmsQuickStart") && !BuildEms
|| solutionFile.ToString().Contains("Spring.Examples.Pool")
|| solutionFile.ToString().Contains("SpringAir")
|| solutionFile.ToString().Contains("Spring.Web.Extensions.Example")
|| solutionFile.ToString().Contains("Spring.WebQuickStart"))
{
continue;
}
MSBuild(s => s
.SetTargets("Restore", "Rebuild")
.SetConfiguration(Configuration)
.SetTargetPath(solutionFile)
.SetNodeReuse(false)
.SetVerbosity(MSBuildVerbosity.Minimal)
);
}
});
Target Antlr => _ => _
.Executes(() =>
{
var projectDir = Solution.GetProject("Spring.Core");
var expressionsDir = Path.Combine(projectDir.Directory, "Expressions");
var antlrExecutable = Path.Combine(Solution.Directory, "build-support/tools/antlr-2.7.6/antlr-2.7.6.exe");
var process = StartProcess(
toolPath: antlrExecutable,
arguments: $"-o {expressionsDir}/Parser {expressionsDir}/Expression.g"
);
process.WaitForExit();
});
Target Pack => _ => _
.After(Test)
.DependsOn(Restore)
.Executes(() =>
{
var packTargets = GetActiveProjects()
.Where(x => !x.Name.Contains(".Test"));
var version = GitRepository.Tags.SingleOrDefault(x => x.StartsWith("v"))?[1..];
var suffix = "";
if (string.IsNullOrWhiteSpace(version))
{
version = ProjectVersion;
suffix = "develop-" + DateTime.UtcNow.ToString("yyyyMMddHHmm");
}
foreach (var project in packTargets)
{
DotNetPack(s => s
.SetProject(project.Path)
.SetVersion(version)
.SetVersionSuffix(suffix)
.SetConfiguration(Configuration.Release)
.EnableNoRestore()
.SetOutputDirectory(ArtifactsDirectory)
);
}
});
Target PackBinaries => _ => _
.DependsOn(CompileSolution)
.Executes(() =>
{
var binDirectory = RootDirectory / "bin";
EnsureCleanDirectory(binDirectory);
var moduleNames = new[]
{
"Common.Logging",
"Common.Logging.Core",
"Spring.Core",
"Spring.Aop",
"Spring.Data",
"Spring.Data.NHibernate*",
"Spring.Web",
"Spring.Web.Mvc5",
"Spring.Web.Extensions",
"Spring.Services",
"Spring.Testing.NUnit",
"Spring.Testing.Microsoft",
"Spring.Messaging.Ems",
"Spring.Messaging.Nms",
"Spring.Messaging",
"Spring.Scheduling.Quartz3",
"Spring.Template.Velocity",
"Spring.Web.Conversation.NHibernate5",
};
var patterns = moduleNames
.SelectMany(x => new []
{
"**/" + Configuration + "/**/" + x + ".dll",
"**/" + Configuration + "/**/" + x + ".xml",
"**/" + Configuration + "/**/" + x + ".pdb"
})
.ToArray();
foreach (var file in BuildDirectory.GlobFiles(patterns))
{
CopyFileToDirectory(file, binDirectory / "net", FileExistsPolicy.OverwriteIfNewer);
}
});
IEnumerable<Project> GetActiveProjects()
{
var packTargets = Solution.GetProjects("*")
.Where(x => x.Name != "Spring.Messaging.Ems" || BuildEms)
.Where(x => !x.Name.Contains("_build"));
return packTargets;
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.ComponentModel;
using System.Linq;
using Nuke.Common.Tooling;
[TypeConverter(typeof(TypeConverter<Configuration>))]
public class Configuration : Enumeration
{
public static Configuration Debug = new Configuration { Value = nameof(Debug) };
public static Configuration Release = new Configuration { Value = nameof(Release) };
public static implicit operator string(Configuration configuration)
{
return configuration.Value;
}
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This file prevents unintended imports of unrelated MSBuild files -->
<!-- Uncomment to include parent Directory.Build.props file -->
<!--<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />-->
</Project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This file prevents unintended imports of unrelated MSBuild files -->
<!-- Uncomment to include parent Directory.Build.targets file -->
<!--<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.targets', '$(MSBuildThisFileDirectory)../'))" />-->
</Project>

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<RootNamespace></RootNamespace>
<NoWarn>CS0649;CS0169</NoWarn>
<NukeRootDirectory>..\..</NukeRootDirectory>
<NukeScriptDirectory>..\..</NukeScriptDirectory>
<NukeTelemetryVersion>1</NukeTelemetryVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Nuke.Common" Version="5.2.1" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,27 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=HeapView_002EDelegateAllocation/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=VariableHidesOuterVariable/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ClassNeverInstantiated_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBeMadeStatic_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/DEFAULT_INTERNAL_MODIFIER/@EntryValue">Implicit</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/DEFAULT_PRIVATE_MODIFIER/@EntryValue">Implicit</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/METHOD_OR_OPERATOR_BODY/@EntryValue">ExpressionBody</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/ThisQualifier/INSTANCE_MEMBERS_QUALIFY_MEMBERS/@EntryValue">0</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_USER_LINEBREAKS/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_AFTER_INVOCATION_LPAR/@EntryValue">False</s:Boolean>
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/MAX_ATTRIBUTE_LENGTH_FOR_SAME_LINE/@EntryValue">120</s:Int64>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">IF_OWNER_IS_SINGLE_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_ARGUMENTS_STYLE/@EntryValue">WRAP_IF_LONG</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_ANONYMOUSMETHOD_ON_SINGLE_LINE/@EntryValue">False</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

7
build.cmd Normal file
View File

@@ -0,0 +1,7 @@
:; set -eo pipefail
:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
:; ${SCRIPT_DIR}/build.sh "$@"
:; exit $?
@ECHO OFF
powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %*

69
build.ps1 Normal file
View File

@@ -0,0 +1,69 @@
[CmdletBinding()]
Param(
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$BuildArguments
)
Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
###########################################################################
# CONFIGURATION
###########################################################################
$BuildProjectFile = "$PSScriptRoot\build-support\nuke-build\_build.csproj"
$TempDirectory = "$PSScriptRoot\\.nuke\temp"
$DotNetGlobalFile = "$PSScriptRoot\\global.json"
$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
$DotNetChannel = "Current"
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
$env:DOTNET_MULTILEVEL_LOOKUP = 0
###########################################################################
# EXECUTION
###########################################################################
function ExecSafe([scriptblock] $cmd) {
& $cmd
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
# If dotnet CLI is installed globally and it matches requested version, use for execution
if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
$(dotnet --version) -and $LASTEXITCODE -eq 0) {
$env:DOTNET_EXE = (Get-Command "dotnet").Path
}
else {
# Download install script
$DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
(New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
# If global.json exists, load expected version
if (Test-Path $DotNetGlobalFile) {
$DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
$DotNetVersion = $DotNetGlobal.sdk.version
}
}
# Install by channel or version
$DotNetDirectory = "$TempDirectory\dotnet-win"
if (!(Test-Path variable:DotNetVersion)) {
ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
} else {
ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
}
$env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
}
Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)"
ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }

62
build.sh Executable file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
bash --version 2>&1 | head -n 1
set -eo pipefail
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
###########################################################################
# CONFIGURATION
###########################################################################
BUILD_PROJECT_FILE="$SCRIPT_DIR/build-support/nuke-build/_build.csproj"
TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp"
DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh"
DOTNET_CHANNEL="Current"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_MULTILEVEL_LOOKUP=0
###########################################################################
# EXECUTION
###########################################################################
function FirstJsonValue {
perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
}
# If dotnet CLI is installed globally and it matches requested version, use for execution
if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
export DOTNET_EXE="$(command -v dotnet)"
else
# Download install script
DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
mkdir -p "$TEMP_DIRECTORY"
curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
chmod +x "$DOTNET_INSTALL_FILE"
# If global.json exists, load expected version
if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
if [[ "$DOTNET_VERSION" == "" ]]; then
unset DOTNET_VERSION
fi
fi
# Install by channel or version
DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
if [[ -z ${DOTNET_VERSION+x} ]]; then
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
else
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
fi
export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
fi
echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"
"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"

12
docker-compose-ci.yml Normal file
View File

@@ -0,0 +1,12 @@
version: '2'
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
- MSSQL_PID=Express
- ACCEPT_EULA=Y
- SA_PASSWORD=MyPassword!
ports:
- 1433:1433

12
docker-compose.yml Normal file
View File

@@ -0,0 +1,12 @@
version: '2'
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-CU8-ubuntu-16.04
environment:
- MSSQL_PID=Express
- ACCEPT_EULA=Y
- SA_PASSWORD=MyPassword!
ports:
- 1433:1433

6
global.json Normal file
View File

@@ -0,0 +1,6 @@
{
"sdk": {
"version": "5.0",
"rollForward": "latestFeature"
}
}

View File

@@ -11,17 +11,20 @@
<DelaySign>false</DelaySign>
<Deterministic>true</Deterministic>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
<Product>Spring.NET</Product>
<Company>SpringSource</Company>
<Copyright>Copyright 2002-2021 Spring.NET Framework Team.</Copyright>
<Trademark>Apache License, Version 2.0</Trademark>
<CommonLoggingVersion>3.4.1</CommonLoggingVersion>
<Authors>SpringSource</Authors>
<PackageIcon>SpringSource_Leaves32x32.png</PackageIcon>
<PackageIconUrl>http://springframework.net/images/SpringSource_Leaves32x32.png</PackageIconUrl>
<PackageIconUrl>https://springframework.net/images/SpringSource_Leaves32x32.png</PackageIconUrl>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<PackageProjectUrl>http://www.springframework.net/</PackageProjectUrl>
<PackageProjectUrl>https://www.springframework.net/</PackageProjectUrl>
<PackageTags>Library</PackageTags>
<NeutralLanguage>en-US</NeutralLanguage>

View File

@@ -10,10 +10,6 @@
<ProjectReference Include="..\Spring.Core\Spring.Core.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
<SubType>Code</SubType>
</Compile>
<None Include="Aop\Config\spring-aop-1.1.xsx">
<DependentUpon>spring-aop-1.1.xsd</DependentUpon>
</None>

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,8 +40,8 @@ namespace Spring.Expressions
/// <remarks>
/// <p>
/// Preparing this object once and reusing it many times for expression
/// evaluation can result in significant performance improvements, as
/// expression parsing and reflection lookups are only performed once.
/// evaluation can result in significant performance improvements, as
/// expression parsing and reflection lookups are only performed once.
/// </p>
/// </remarks>
/// <author>Aleksandar Seovic</author>
@@ -99,9 +99,9 @@ namespace Spring.Expressions
Typename2Creator = new Hashtable();
foreach (Type type in typeof(SpringASTFactory).Assembly.GetTypes())
{
if (BASENODE_TYPE.IsAssignableFrom(type))
if (BASENODE_TYPE.IsAssignableFrom(type) && !type.IsAbstract)
{
ConstructorInfo ctor = type.GetConstructor(new Type[0]);
ConstructorInfo ctor = type.GetConstructor(System.Type.EmptyTypes);
if (ctor != null)
{
ASTNodeCreator creator = new ASTNodeCreator(ctor);
@@ -258,7 +258,7 @@ namespace Spring.Expressions
{ }
/// <summary>
/// Evaluates this expression for the specified root object and returns
/// Evaluates this expression for the specified root object and returns
/// value of the last node.
/// </summary>
/// <param name="context">Context to evaluate expressions against.</param>
@@ -283,7 +283,7 @@ namespace Spring.Expressions
}
/// <summary>
/// Evaluates this expression for the specified root object and sets
/// Evaluates this expression for the specified root object and sets
/// value of the last node.
/// </summary>
/// <param name="context">Context to evaluate expressions against.</param>
@@ -319,7 +319,7 @@ namespace Spring.Expressions
}
/// <summary>
/// Evaluates this expression for the specified root object and returns
/// Evaluates this expression for the specified root object and returns
/// <see cref="PropertyInfo"/> of the last node, if possible.
/// </summary>
/// <param name="context">Context to evaluate expression against.</param>

View File

@@ -4,10 +4,6 @@
<Description>Core functionality for Spring.Net IoC container</Description>
<NoWarn>219, 162, 618, 1591</NoWarn>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>rem $(ProjectDir)..\..\..\build-support\tools\antlr-2.7.6\antlr-2.7.6.exe -o $(ProjectDir)Expressions\Parser $(ProjectDir)Expressions\Expression.g
</PreBuildEvent>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == '$(TargetFullFrameworkVersion)' ">
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System.Configuration" />
@@ -30,10 +26,6 @@
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="Context\Config\spring-context-1.3.xsd" />
<EmbeddedResource Include="Context\Config\spring-context-2.0.xsd" />
<EmbeddedResource Include="Objects\Factory\Xml\spring-tool-1.1.xsd" />

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright <EFBFBD> 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,7 +36,7 @@ namespace Spring.Util
/// </summary>
/// <remarks>
/// <p>
/// The purpose of this class is to provide a simple abstraction for creating and managing dynamic assemblies.
/// The purpose of this class is to provide a simple abstraction for creating and managing dynamic assemblies.
/// </p>
/// <note>
/// Using this factory you can't define several modules within a single dynamic assembly - only a simple one2one relation between assembly/module is used.
@@ -66,7 +66,7 @@ namespace Spring.Util
public sealed class DynamicCodeManager
{
private static readonly Hashtable s_moduleCache = new CaseInsensitiveHashtable(); //CollectionsUtil.CreateCaseInsensitiveHashtable();
/// <summary>
/// prevent instantiation
/// </summary>
@@ -74,13 +74,13 @@ namespace Spring.Util
{
throw new InvalidOperationException();
}
/// <summary>
/// Returns the <see cref="ModuleBuilder"/> for the dynamic module within the specified assembly.
/// </summary>
/// <remarks>
/// If the assembly does not exist yet, it will be created.<br/>
/// This factory caches any dynamic assembly it creates - calling GetModule() twice with
/// This factory caches any dynamic assembly it creates - calling GetModule() twice with
/// the same name will *not* create 2 distinct modules!
/// </remarks>
/// <param name="assemblyName">The assembly-name of the module to be returned</param>
@@ -111,7 +111,7 @@ namespace Spring.Util
an.SetPublicKey(Assembly.GetExecutingAssembly().GetName().GetPublicKey());
var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Run, null, null, null, null,null, true );
#if DEBUG
module = assembly.DefineDynamicModule(an.Name, true);
var module = assembly.DefineDynamicModule(an.Name, true);
#else
var module = assembly.DefineDynamicModule(an.Name, false);
#endif
@@ -138,13 +138,13 @@ namespace Spring.Util
public static void SaveAssembly( string assemblyName )
{
AssertUtils.ArgumentHasText(assemblyName, "assemblyName");
ModuleBuilder module = null;
lock(s_moduleCache.SyncRoot)
{
module = (ModuleBuilder) s_moduleCache[assemblyName];
}
if(module == null)
{
throw new ArgumentException(string.Format("'{0}' is not a valid dynamic assembly name", assemblyName), "assemblyName");

View File

@@ -19,9 +19,6 @@
<Reference Include="System.Web" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<Compile Remove="Data\NHibernate\Support\OpenSessionInViewModule.cs" Condition=" '$(TargetFramework)' != 'net461'" />
</ItemGroup>
</Project>

View File

@@ -15,9 +15,6 @@
<Reference Include="System.Web" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<None Include="Data\Config\spring-database-1.3.xsx">
<DependentUpon>spring-database-1.3.xsd</DependentUpon>
</None>

View File

@@ -21,9 +21,6 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<EmbeddedResource Include="Messaging\Ems\Config\spring-ems-1.3.xsd" />
</ItemGroup>
</Project>

View File

@@ -12,9 +12,6 @@
<PackageReference Include="Apache.NMS" Version="1.8.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<EmbeddedResource Include="Messaging\Nms\Config\spring-nms-1.2.xsd">
<SubType />
</EmbeddedResource>

View File

@@ -11,11 +11,6 @@
<Reference Include="System.Messaging" />
<Reference Include="System.Transactions" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Experimental.System.Messaging" Version="1.1.0" />
</ItemGroup>

View File

@@ -10,9 +10,4 @@
<ItemGroup>
<PackageReference Include="Quartz" Version="3.2.3" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
</Project>

View File

@@ -15,10 +15,6 @@
<Reference Include="System.Web.Services" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
<SubType>Code</SubType>
</Compile>
<None Include="Spring.Services.build" />
<EmbeddedResource Include="EnterpriseServices\EnterpriseServices.keys" />
<EmbeddedResource Include="Remoting\Config\spring-remoting-1.1.xsd" />

View File

@@ -9,9 +9,6 @@
<PackageReference Include="Castle.NVelocity" Version="1.1.1" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="..\Spring.Template.Velocity\Template\Velocity\CommonsLoggingLogSystem.cs">
<Link>Template\Velocity\CommonsLoggingLogSystem.cs</Link>
</Compile>

View File

@@ -10,9 +10,6 @@
<PackageReference Include="NVelocity" Version="1.2.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<EmbeddedResource Include="Template\Velocity\Config\spring-nvelocity-1.3.xsd" />
</ItemGroup>
</Project>

View File

@@ -10,9 +10,4 @@
<ItemGroup>
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
</Project>

View File

@@ -11,10 +11,4 @@
<ItemGroup>
<PackageReference Include="NUnit" Version="3.12.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<None Include="Spring.Testing.NUnit.build" />
</ItemGroup>
</Project>

View File

@@ -11,10 +11,4 @@
<ItemGroup>
<Reference Include="System.Web" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<None Include="app.config" />
</ItemGroup>
</Project>

View File

@@ -12,9 +12,4 @@
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Services" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
</Project>

View File

@@ -18,9 +18,4 @@
<Reference Include="System.Web.Routing" />
<Reference Include="System.Data.DataSetExtensions" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
</Project>

View File

@@ -14,10 +14,4 @@
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.Web.Services" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
</Project>

View File

@@ -17,11 +17,11 @@
<CommonLoggingVersion>3.4.1</CommonLoggingVersion>
<Log4NetVersion>2.0.8</Log4NetVersion>
<NUnitVersion>3.12.0</NUnitVersion>
<NUnitVersion>3.13.1</NUnitVersion>
<NUnitTestAdapterVersion>3.17.0</NUnitTestAdapterVersion>
<FakeItEasyVersion>6.2.1</FakeItEasyVersion>
<FakeItEasyAnalyzerVersion>6.0.0</FakeItEasyAnalyzerVersion>
<MicrosoftTestSDKVersion>16.8.0</MicrosoftTestSDKVersion>
<MicrosoftTestSDKVersion>16.9.4</MicrosoftTestSDKVersion>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
<ComVisible>False</ComVisible>
@@ -30,6 +30,8 @@
<LangVersion>latest</LangVersion>
<TargetFullFrameworkVersion>net461</TargetFullFrameworkVersion>
<IsPackable>false</IsPackable>
</PropertyGroup>

View File

@@ -1,13 +1,13 @@
#region License
/*
* Copyright 2002-2010 the original author or authors.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -34,22 +34,22 @@ namespace Spring.Aop.Framework.Adapter
/// </summary>
/// <author>Dmitriy Kopylenko</author>
/// <author>Simon White (.NET)</author>
[TestFixture]
[Platform("Win")]
public class AdvisorAdapterRegistrationTests
{
[Test]
public void AdvisorAdapterRegistrationManagerNotPresentInContext()
public void AdvisorAdapterRegistrationManagerNotPresentInContext()
{
string configLocation = ReadOnlyXmlTestResource.GetFilePath("withoutBPPContext.xml", typeof(AdvisorAdapterRegistrationTests));
IApplicationContext ctx = new XmlApplicationContext(configLocation);
ITestObject to = (ITestObject) ctx.GetObject("testObject");
// just invoke any method to see if advice fired
try
try
{
to.ReturnsThis();
Assert.Fail("Should throw UnknownAdviceTypeException");
}
catch (UnknownAdviceTypeException)
catch (UnknownAdviceTypeException)
{
// expected
Assert.AreEqual(0, GetAdviceImpl(to).InvocationCounter);
@@ -57,24 +57,24 @@ namespace Spring.Aop.Framework.Adapter
}
[Test]
public void AdvisorAdapterRegistrationManagerPresentInContext()
public void AdvisorAdapterRegistrationManagerPresentInContext()
{
string configLocation = ReadOnlyXmlTestResource.GetFilePath("withBPPContext.xml", typeof(AdvisorAdapterRegistrationTests));
IApplicationContext ctx = new XmlApplicationContext(configLocation);
ITestObject to = (ITestObject) ctx.GetObject("testObject");
// just invoke any method to see if advice fired
try
try
{
to.ReturnsThis();
Assert.AreEqual(1, GetAdviceImpl(to).InvocationCounter);
}
catch (UnknownAdviceTypeException)
catch (UnknownAdviceTypeException)
{
Assert.Fail("Should not throw UnknownAdviceTypeException");
}
}
private SimpleBeforeAdviceImpl GetAdviceImpl(ITestObject to)
private SimpleBeforeAdviceImpl GetAdviceImpl(ITestObject to)
{
IAdvised advised = (IAdvised) to;
IAdvisor advisor = advised.Advisors[0];

View File

@@ -51,7 +51,7 @@ namespace Spring.Aop.Framework.AutoProxy
public class ObjectWithoutInterface
{
public virtual void Foo()
{ }
{ }
}
public class TransparentProxyFactory : IFactoryObject
@@ -162,12 +162,13 @@ namespace Spring.Aop.Framework.AutoProxy
}
[Test]
[Platform("Win")]
public void ProxyTransparentProxy()
{
DefaultListableObjectFactory of = new DefaultListableObjectFactory();
ConstructorArgumentValues ctorArgs = new ConstructorArgumentValues();
ctorArgs.AddNamedArgumentValue("objectType", typeof(ITestObject));
ctorArgs.AddNamedArgumentValue("objectType", typeof(ITestObject));
of.RegisterObjectDefinition("bar", new RootObjectDefinition(typeof(TransparentProxyFactory), ctorArgs, null));
TestAutoProxyCreator apc = new TestAutoProxyCreator(of);

View File

@@ -1,5 +1,5 @@
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -532,6 +532,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test]
[Platform("Win")]
public void ProxyMethodWithRefOutParametersWithDirectCall()
{
PublicRefOutTestObject target = new PublicRefOutTestObject();
@@ -547,6 +548,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test]
[Platform("Win")]
public void ProxyMethodWithRefOutParametersWithDynamicReflection()
{
PublicRefOutTestObject target = new PublicRefOutTestObject();
@@ -566,6 +568,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test]
[Platform("Win")]
public virtual void ProxyMethodWithRefOutParametersWithStandardReflection()
{
InternalRefOutTestObject target = new InternalRefOutTestObject();
@@ -660,6 +663,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test]
[Platform("Win")]
public void ProxyGenericMethodWithRefOutParametersWithDirectCall()
{
PublicRefOutGenericTestObject target = new PublicRefOutGenericTestObject();
@@ -675,6 +679,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test]
[Platform("Win")]
public void ProxyGenericMethodWithRefOutParametersWithDynamicReflection()
{
PublicRefOutGenericTestObject target = new PublicRefOutGenericTestObject();
@@ -694,6 +699,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test]
[Platform("Win")]
public virtual void ProxyGenericMethodWithRefOutParametersWithStandardReflection()
{
InternalRefOutGenericTestObject target = new InternalRefOutGenericTestObject();
@@ -844,6 +850,7 @@ namespace Spring.Aop.Framework.DynamicProxy
}
[Test(Description = "http://opensource.atlassian.com/projects/spring/browse/SPRNET-340")]
[Platform("Win")]
public void MultiThreadedProxyCreation()
{
MultiThreadedProxyCreation(5);

View File

@@ -1,13 +1,13 @@
#region License
/*
* Copyright 2002-2010 the original author or authors.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -55,7 +55,7 @@ namespace Spring.Aop.Support
// Interceptor behind regexp advisor
NopInterceptor nop = (NopInterceptor) iof.GetObject("NopInterceptor");
Assert.AreEqual(0, nop.Count);
int newAge = 12;
// Not advised
advised.Exceptional(null);
@@ -74,20 +74,20 @@ namespace Spring.Aop.Support
{
IObjectFactory iof = new XmlObjectFactory(new ReadOnlyXmlTestResource("RegularExpressionSetterTests.xml", GetType()));
IPerson advised = (IPerson) iof.GetObject("SettersAndReturnsThisAdvised");
// Interceptor behind regexp advisor
NopInterceptor nop = (NopInterceptor) iof.GetObject("NopInterceptor");
Assert.AreEqual(0, nop.Count);
int newAge = 12;
// Not advised
advised.Exceptional(null);
Assert.AreEqual(0, nop.Count);
// This is proxied
advised.ReturnsThis();
Assert.AreEqual(1, nop.Count);
// Only setter is advised
advised.SetAge(newAge);
Assert.AreEqual(2, nop.Count);
@@ -97,6 +97,7 @@ namespace Spring.Aop.Support
}
[Test]
[Platform("Win")]
public void Serialization()
{
IObjectFactory iof = new XmlObjectFactory(new ReadOnlyXmlTestResource("RegularExpressionSetterTests.xml", GetType()));
@@ -104,12 +105,12 @@ namespace Spring.Aop.Support
// Interceptor behind regexp advisor
NopInterceptor nop = (NopInterceptor) iof.GetObject("NopInterceptor");
Assert.AreEqual(0, nop.Count);
int newAge = 12;
// Not advised
Assert.AreEqual(0, p.GetAge());
Assert.AreEqual(0, nop.Count);
// This is proxied
p.SetAge(newAge);
Assert.AreEqual(1, nop.Count);
@@ -117,7 +118,7 @@ namespace Spring.Aop.Support
Assert.AreEqual(newAge, p.GetAge());
// Only setter fired
Assert.AreEqual(2, nop.Count);
// Serialize and continue...
#if !NETCOREAPP // deep chains for Type serialization problems, not worth the effort at the moment

View File

@@ -25,7 +25,14 @@
<ItemGroup>
<Compile Include="..\Spring.Core.Tests\TestAssemblySetup.cs" Link="TestAssemblySetup.cs" />
<Content Include="App.config" CopyToOutputDirectory="PreserveNewest" />
<Content Include="Data\**\*.xml" CopyToOutputDirectory="PreserveNewest" />
<None Include="Data\**\*">
<Link>Data\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Data\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<EmbeddedResource Include="Aop\Config\AopNamespaceParserTests.xml" />
<EmbeddedResource Include="Data\Spring\Aop\Framework\adapter\withBPPContext.xml" />
<EmbeddedResource Include="Data\Spring\Aop\Framework\adapter\withoutBPPContext.xml" />

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,19 +32,19 @@ namespace Spring.Core.IO
/// Unit tests for the FileSystemResourceTest class.
/// </summary>
/// <author>Rick Evans</author>
[TestFixture]
[Platform("Win")]
public class FileSystemResourceTests : FileSystemResourceCommonTests
{
protected override FileSystemResource CreateResourceInstance( string resourceName )
{
return new FileSystemResource(resourceName);
}
[Test]
public void LeadingProtocolIsNotTreatedRelative()
{
FileSystemResource res = new FileSystemResource(@"file://\\server\share\samples\artfair\");
FileSystemResource res2 = (FileSystemResource) res.CreateRelative(@"file://./index.html");
FileSystemResource res2 = (FileSystemResource) res.CreateRelative(@"file://./index.html");
Assert.AreEqual(new Uri(Path.Combine(Environment.CurrentDirectory, "index.html")).AbsolutePath, res2.Uri.AbsolutePath);
}
@@ -94,7 +94,7 @@ namespace Spring.Core.IO
}
}
}
[Test]
public void Resolution_WithProtocolAndSpecialHomeCharacter()
{
@@ -116,7 +116,7 @@ namespace Spring.Core.IO
"The file name with file://~/.. must have resolved to a file " +
"in the parent directory of the currently executing domain.");
}
[Test]
public void CreateRelativeWithParent()
{
@@ -198,7 +198,7 @@ namespace Spring.Core.IO
}
}
}
[Test]
public void RelativeLocalFileSystemResourceWhenNotRelative()
{
@@ -259,8 +259,8 @@ namespace Spring.Core.IO
IResource rel5 = res.CreateRelative(@"..\..\index.html");
Assert.IsTrue(rel5 is FileSystemResource);
Assert.AreEqual(@"file [c:\index.html]", rel5.Description);
}
}
[Test]
public void RelativeUncResourceWhenNotRelative()
{
@@ -321,6 +321,6 @@ namespace Spring.Core.IO
IResource rel5 = res.CreateRelative(@"..\..\index.html");
Assert.IsTrue(rel5 is FileSystemResource);
Assert.AreEqual(@"file [\\server\share\index.html]", rel5.Description);
}
}
}
}

View File

@@ -43,7 +43,7 @@ namespace Spring.Core.IO
public void FixtureSetUp()
{
// enable (null appender) logging, just to ensure that the logging code is correct
LogManager.Adapter = new NoOpLoggerFactoryAdapter();
LogManager.Adapter = new NoOpLoggerFactoryAdapter();
}
[Test]
@@ -80,6 +80,7 @@ namespace Spring.Core.IO
}
[Test]
[Platform("Win")]
public void ConvertFromWithEnvironmentVariableExpansion()
{
string filename = Guid.NewGuid().ToString();

View File

@@ -52,6 +52,7 @@ namespace Spring.Core.IO
}
[Test]
[Platform("Win")]
public void GetValidFileInfo()
{
UrlResource urlResource = new UrlResource(FILE_PROTOCOL_PREFIX + "C:/temp");

View File

@@ -1,14 +1,14 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
*
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -32,7 +32,7 @@ namespace Spring.Core.TypeConversion
/// Unit tests for the RegistryKeyConverter class.
/// </summary>
/// <author>Aleksandar Seovic</author>
[TestFixture]
[Platform("Win")]
public sealed class RegistryKeyConverterTests
{
[Test]

View File

@@ -3,18 +3,18 @@
<objects xmlns="http://www.springframework.net">
<object id="resource1" type="Spring.Objects.ResourceTestObject, Spring.Core.Tests">
<property name="resource">
<value>file:///temp/spring-test.properties</value>
<value>file://./temp/spring-test.properties</value>
</property>
<property name="inputStream">
<value>file:///temp/spring-test.properties</value>
<value>file://./temp/spring-test.properties</value>
</property>
</object>
<object id="resource2" type="Spring.Objects.ResourceTestObject, Spring.Core.Tests">
<constructor-arg index="0">
<value>file:///temp/spring-test.properties</value>
<value>file://./temp/spring-test.properties</value>
</constructor-arg>
<constructor-arg index="1">
<value>file:///temp/spring-test.properties</value>
<value>file://./temp/spring-test.properties</value>
</constructor-arg>
</object>
</objects>

View File

@@ -28,7 +28,6 @@ namespace Spring.Globalization.Formatters
/// Unit tests for CurrencyFormatter class.
/// </summary>
/// <author>Aleksandar Seovic</author>
[TestFixture]
public class CurrencyFormatterTests
{
[Test]
@@ -54,6 +53,7 @@ namespace Spring.Globalization.Formatters
}
#if !MONO
[Test]
[Platform("Win")]
public void FormatUsingDefaults()
{
CurrencyFormatter fmt = new CurrencyFormatter("en-US");
@@ -108,6 +108,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void ParseUsingDefaults()
{
CurrencyFormatter fmt = new CurrencyFormatter("en-US");
@@ -160,6 +161,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void FormatUsingCustomSettings()
{
CurrencyFormatter fmt = new CurrencyFormatter("en-US");
@@ -189,8 +191,6 @@ namespace Spring.Globalization.Formatters
Assert.AreEqual("-1.234,56 din", fmt.Format(-1234.56));
}
fmt = new CurrencyFormatter(CultureInfoUtils.SerbianCyrillicCultureName);
fmt.GroupSizes = new int[] { 1, 2 };
fmt.GroupSeparator = "'";
@@ -213,6 +213,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void ParseUsingCustomSettings()
{
CurrencyFormatter fmt = new CurrencyFormatter("en-US");

View File

@@ -28,7 +28,6 @@ namespace Spring.Globalization.Formatters
/// Unit tests for DateTimeFormatter class.
/// </summary>
/// <author>Aleksandar Seovic</author>
[TestFixture]
public class DateTimeFormatterTests
{
[Test]
@@ -54,6 +53,7 @@ namespace Spring.Globalization.Formatters
}
#if !MONO
[Test]
[Platform("Win")]
public void FormatUsingDefaults()
{
DateTimeFormatter fmt = new DateTimeFormatter("d", "en-US");
@@ -103,6 +103,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void ParseUsingDefaults()
{
DateTimeFormatter fmt = new DateTimeFormatter("d", "en-US");

View File

@@ -54,6 +54,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void FormatUsingDefaults()
{
FloatFormatter fmt = new FloatFormatter(FloatFormatter.DefaultFormat, "en-US");

View File

@@ -28,7 +28,6 @@ namespace Spring.Globalization.Formatters
/// Unit tests for NumberFormatter class.
/// </summary>
/// <author>Aleksandar Seovic</author>
[TestFixture]
public class NumberFormatterTests
{
[Test]
@@ -54,6 +53,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void FormatUsingDefaults()
{
NumberFormatter fmt = new NumberFormatter("en-US");
@@ -70,6 +70,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void ParseUsingDefaults()
{
NumberFormatter fmt = new NumberFormatter("en-US");
@@ -86,6 +87,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void FormatUsingCustomSettings()
{
NumberFormatter fmt = new NumberFormatter("en-US");

View File

@@ -28,7 +28,6 @@ namespace Spring.Globalization.Formatters
/// Unit tests for PercentFormatter class.
/// </summary>
/// <author>Aleksandar Seovic</author>
[TestFixture]
public class PercentFormatterTests
{
[Test]
@@ -54,6 +53,7 @@ namespace Spring.Globalization.Formatters
}
[Test]
[Platform("Win")]
public void FormatUsingDefaults()
{
PercentFormatter fmt = new PercentFormatter("en-US");

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -41,8 +41,8 @@ namespace Spring.Objects.Factory.Config
EnvironmentVariableSource vs = new EnvironmentVariableSource();
// existing vars
Assert.AreEqual(Environment.GetEnvironmentVariable("path"), vs.ResolveVariable("PATH"));
Assert.AreEqual(Environment.GetEnvironmentVariable("PATH"), vs.ResolveVariable("path"));
Assert.AreEqual(Environment.GetEnvironmentVariable("path"), vs.ResolveVariable("path"));
Assert.AreEqual(Environment.GetEnvironmentVariable("PATH"), vs.ResolveVariable("PATH"));
Assert.AreEqual(Environment.GetEnvironmentVariable("ComputerName"), vs.ResolveVariable("computerName"));
// non-existant variable

View File

@@ -47,7 +47,7 @@ namespace Spring.Objects.Factory.Config
private static string testConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb;User ID=Admin;Password=;";
private static string testConnectionStringTwo = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb;User ID=Admin;Password=Ernie;";
#endif
[SetUp]
public void SetUp()
{
@@ -140,7 +140,7 @@ namespace Spring.Objects.Factory.Config
IConfigurableListableObjectFactory mock = A.Fake<IConfigurableListableObjectFactory>();
A.CallTo(() => mock.GetObjectDefinitionNames(false)).Returns(new string [] {defName});
A.CallTo(() => mock.GetObjectDefinition(defName, false)).Returns(def);
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
NameValueCollection defaultProperties = new NameValueCollection();
const string expectedName = "Rick Evans";
@@ -159,7 +159,7 @@ namespace Spring.Objects.Factory.Config
const string defName = "foo";
const string placeholder = "${name}";
MutablePropertyValues pvs = new MutablePropertyValues();
const string theProperty = "name";
pvs.Add(theProperty, placeholder);
@@ -188,6 +188,7 @@ namespace Spring.Objects.Factory.Config
/// variable is replaced.
/// </summary>
[Test]
[Platform("Win")]
public void WithEnvironmentVariableFallback()
{
StaticApplicationContext ac = new StaticApplicationContext();
@@ -233,6 +234,7 @@ namespace Spring.Objects.Factory.Config
/// variable setting to override the explicitly defined name value collection.
/// </summary>
[Test]
[Platform("Win")]
public void WithOverridingEnvironmentProperty()
{
StaticApplicationContext ac = new StaticApplicationContext();
@@ -312,14 +314,14 @@ namespace Spring.Objects.Factory.Config
public void SunnyDay()
{
StaticApplicationContext ac = new StaticApplicationContext();
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.Add("age", "${age}");
RootObjectDefinition def
= new RootObjectDefinition("${fqn}", new ConstructorArgumentValues(), pvs);
ac.RegisterObjectDefinition("tb3", def);
pvs = new MutablePropertyValues();
@@ -387,7 +389,7 @@ namespace Spring.Objects.Factory.Config
Assert.AreEqual(98, inner2.Age);
Assert.AreEqual("namemyvar${", inner2.Name);
}
/// <summary>
/// Makes sure that an appropriate exception is raised when trying
/// to resolve this placeholder... ${foo} with this value... foo=ba${foo}r
@@ -404,7 +406,7 @@ namespace Spring.Objects.Factory.Config
NameValueCollection properties = new NameValueCollection();
const string expectedName = "ba${foo}r";
properties.Add("foo", expectedName);
IConfigurableListableObjectFactory mock = A.Fake<IConfigurableListableObjectFactory>();
A.CallTo(() => mock.GetObjectDefinitionNames(false)).Returns(new string[] {"foo"});
A.CallTo(() => mock.GetObjectDefinition(null, false)).WithAnyArguments().Returns(def);
@@ -437,7 +439,7 @@ namespace Spring.Objects.Factory.Config
IConfigurableListableObjectFactory mock = A.Fake<IConfigurableListableObjectFactory>();
A.CallTo(() => mock.GetObjectDefinitionNames(false)).Returns(new string[] {"foo"});
A.CallTo(() => mock.GetObjectDefinition(null, false)).WithAnyArguments().Returns(def);
PropertyPlaceholderConfigurer cfg = new PropertyPlaceholderConfigurer();
cfg.Properties = properties;
cfg.PostProcessObjectFactory(mock);
@@ -602,7 +604,7 @@ namespace Spring.Objects.Factory.Config
{
IApplicationContext ctx = new XmlApplicationContext(
"file://Spring/Objects/Factory/Config/PPCWithTypesTests.xml");
object obj = ctx["testObject"];
Assert.IsTrue(obj is TestObject);

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +32,7 @@ namespace Spring.Objects.Factory.Config
/// Unit tests for the RegistryVariableSource class.
/// </summary>
/// <author>Aleksandar Seovic</author>
[TestFixture]
[Platform("Win")]
public sealed class RegistryVariableSourceTests
{
private RegistryKey key;

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -105,7 +105,7 @@ namespace Spring.Objects.Factory.Config
[Test]
public void WithinApplicationContext()
{
IApplicationContext ctx = new XmlApplicationContext("file://Spring/Objects/Factory/Config/typeAliases.xml");
IApplicationContext ctx = new XmlApplicationContext("file://Spring/Objects/Factory/Config/TypeAliases.xml");
object obj1 = ctx.GetObject("testObject1");
Assert.IsNotNull(obj1);

View File

@@ -703,7 +703,7 @@ namespace Spring.Objects.Factory.Xml
[Test]
public void DependenciesMaterializeThis()
{
IResource resource = new ReadOnlyXmlTestResource("dependenciesMaterializeThis.xml", GetType());
IResource resource = new ReadOnlyXmlTestResource("dependenciesmaterializethis.xml", GetType());
XmlObjectFactory bf = new XmlObjectFactory(resource);
DummyBo bos = (DummyBo) bf.GetObject("boSingleton");
DummyBo bop = (DummyBo) bf.GetObject("boPrototype");
@@ -796,7 +796,7 @@ namespace Spring.Objects.Factory.Xml
[Test]
public void FactoryReferenceCircle()
{
IResource resource = new ReadOnlyXmlTestResource("factoryCircle.xml", GetType());
IResource resource = new ReadOnlyXmlTestResource("factorycircle.xml", GetType());
XmlObjectFactory xof = new XmlObjectFactory(resource);
TestObject tb = (TestObject) xof.GetObject("singletonFactory");
DummyFactory db = (DummyFactory) xof.GetObject("&singletonFactory");
@@ -1062,14 +1062,14 @@ namespace Spring.Objects.Factory.Xml
[Test]
public void UnsatisfiedObjectDependencyCheck()
{
XmlObjectFactory xof = new XmlObjectFactory(new ReadOnlyXmlTestResource("unsatisfiedObjectDependencyCheck.xml", GetType()));
XmlObjectFactory xof = new XmlObjectFactory(new ReadOnlyXmlTestResource("unsatisfiedobjectdependencycheck.xml", GetType()));
Assert.Throws<UnsatisfiedDependencyException>(() => xof.GetObject("a", typeof(DependenciesObject)));
}
[Test]
public void UnsatisfiedSimpleDependencyCheck()
{
XmlObjectFactory xof = new XmlObjectFactory(new ReadOnlyXmlTestResource("unsatisfiedSimpleDependencyCheck.xml", GetType()));
XmlObjectFactory xof = new XmlObjectFactory(new ReadOnlyXmlTestResource("unsatisfiedsimpledependencycheck.xml", GetType()));
Assert.Throws<UnsatisfiedDependencyException>(() => xof.GetObject("a", typeof(DependenciesObject)));
}
@@ -1078,7 +1078,7 @@ namespace Spring.Objects.Factory.Xml
{
XmlObjectFactory xof
= new XmlObjectFactory(
new ReadOnlyXmlTestResource("satisfiedObjectDependencyCheck.xml", GetType()));
new ReadOnlyXmlTestResource("satisfiedobjectdependencycheck.xml", GetType()));
DependenciesObject a = (DependenciesObject) xof.GetObject("a");
Assert.IsNotNull(a.Spouse);
}
@@ -1089,7 +1089,7 @@ namespace Spring.Objects.Factory.Xml
XmlObjectFactory xof =
new XmlObjectFactory(
new ReadOnlyXmlTestResource(
"satisfiedSimpleDependencyCheck.xml", GetType()));
"satisfiedsimpledependencycheck.xml", GetType()));
DependenciesObject a = (DependenciesObject) xof.GetObject("a");
Assert.AreEqual(a.Age, 33);
}
@@ -1097,7 +1097,7 @@ namespace Spring.Objects.Factory.Xml
[Test]
public void UnsatisfiedAllDependencyCheck()
{
XmlObjectFactory xof= new XmlObjectFactory(new ReadOnlyXmlTestResource("unsatisfiedAllDependencyCheckMissingObjects.xml", GetType()));
XmlObjectFactory xof= new XmlObjectFactory(new ReadOnlyXmlTestResource("unsatisfiedalldependencycheckmissingobjects.xml", GetType()));
Assert.Throws<UnsatisfiedDependencyException>(() => xof.GetObject("a", typeof(DependenciesObject)));
}
@@ -1106,7 +1106,7 @@ namespace Spring.Objects.Factory.Xml
{
XmlObjectFactory xof
= new XmlObjectFactory(
new ReadOnlyXmlTestResource("satisfiedAllDependencyCheck.xml", GetType()));
new ReadOnlyXmlTestResource("satisfiedalldependencycheck.xml", GetType()));
DependenciesObject a = (DependenciesObject) xof.GetObject("a");
Assert.AreEqual(a.Age, 33);
Assert.IsNotNull(a.Name);
@@ -1346,7 +1346,7 @@ namespace Spring.Objects.Factory.Xml
try
{
new XmlObjectFactory(
new ReadOnlyXmlTestResource("classNotFound.xml", GetType()));
new ReadOnlyXmlTestResource("classnotfound.xml", GetType()));
}
catch (ObjectDefinitionStoreException ex)
{
@@ -1356,6 +1356,7 @@ namespace Spring.Objects.Factory.Xml
#if !NETCOREAPP
[Test]
[Platform("Win")]
public void AnObjectCanBeIstantiatedWithANotFullySpecifiedAssemblyName()
{
IResource resource = new ReadOnlyXmlTestResource("notfullyspecified.xml", GetType());
@@ -1368,8 +1369,7 @@ namespace Spring.Objects.Factory.Xml
[Test]
public void ResourceAndInputStream()
{
//string filename = @"C:\temp\spring-test.properties";
string filename = @"/temp/spring-test.properties";
string filename = "./temp/spring-test.properties";
FileInfo file = new FileInfo(filename);
bool tempDirWasCreated = false;
try

View File

@@ -1,5 +1,5 @@
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -125,7 +125,7 @@ namespace Spring.Proxy
{
ConstructorInfo ci = typeof(FakeServiceKnownTypeAttribute).GetConstructor(new Type[] { typeof(Type) });
CustomAttributeBuilder cab = new CustomAttributeBuilder(ci, new object[] { typeof(TestObject) });
IProxyTypeBuilder builder = GetProxyBuilder();
builder.TargetType = typeof(ClassWithFakeServiceKnownTypeAttribute);
builder.TypeAttributes.Add(cab);
@@ -273,6 +273,7 @@ namespace Spring.Proxy
#if !MONO && !NETCOREAPP
// http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=94803
[Test]
[Platform("Win")]
public void ProxySecurityAttribute()
{
IProxyTypeBuilder builder = GetProxyBuilder();

View File

@@ -3,6 +3,7 @@
<TargetFrameworks>net5.0;$(TargetFullFrameworkVersion)</TargetFrameworks>
<NoWarn>$(NoWarn);SYSLIB0001;SYSLIB0003;SYSLIB0011</NoWarn>
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.csproj" />
@@ -21,7 +22,7 @@
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="NUnit" Version="$(NUnitVersion)" />
<PackageReference Include="NUnit3TestAdapter" Version="$(NUnitTestAdapterVersion)" />
<PackageReference Include="System.Resources.Extensions" Version="4.7.1" />
<PackageReference Include="System.Resources.Extensions" Version="5.0.0" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == '$(TargetFullFrameworkVersion)' ">
<Reference Include="Microsoft.CSharp" />
@@ -45,12 +46,16 @@
<Compile Remove="Util\ObjectUtilsTests.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="App.config">
<None Include="App.config" Link="testhost.dll.config" CopyToOutputDirectory="PreserveNewest" />
<None Include="App.config" Link="ReSharperTestRunner64.dll.config" CopyToOutputDirectory="PreserveNewest" />
<None Include="Data\**\*">
<Link>Data\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Data\**">
</None>
<None Include="Data\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</None>
<Compile Remove="Context\Attributes\FailAssemblyObjectDefinitionScannerTests.cs" />
<EmbeddedResource Include="Context\Attributes\*.xml" />
<EmbeddedResource Include="Context\Support\*.xml" />
@@ -71,9 +76,4 @@
<EmbeddedResource Include="Resources\SimpleAppContext.xml" />
<EmbeddedResource Include="TestResource.txt" />
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="xcopy &quot;$(ProjectDir)Data&quot; &quot;$(OutDir)&quot; /y /s /q /d" />
<Exec Command="copy &quot;$(ProjectDir)App.config&quot; &quot;$(OutDir)testhost.dll.config&quot;" />
<Exec Command="copy &quot;$(ProjectDir)App.config&quot; &quot;$(OutDir)ReSharperTestRunner64.dll.config&quot;" />
</Target>
</Project>

View File

@@ -14,16 +14,19 @@ namespace Spring
[OneTimeSetUp]
public void SetUp()
{
// while R# is broken (https://youtrack.jetbrains.com/issue/RSRP-451142)
string codeBase = Assembly.GetExecutingAssembly().Location;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
var pathToUse = Path.GetDirectoryName(path);
Directory.SetCurrentDirectory(pathToUse);
CultureInfo enUs = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = enUs;
Thread.CurrentThread.CurrentUICulture = enUs;
try
{
// while R# is broken (https://youtrack.jetbrains.com/issue/RSRP-451142)
string codeBase = Assembly.GetExecutingAssembly().Location;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
var pathToUse = Path.GetDirectoryName(path);
Directory.SetCurrentDirectory(pathToUse);
}
catch
{
// ignored
}
}
}
}

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,41 +36,39 @@ namespace Spring.Threading
protected abstract IThreadStorage CreateStorage();
protected virtual void ThreadSetup()
{}
{
}
protected virtual void ThreadCleanup()
{}
{
}
[OneTimeSetUp]
public void FixtureSetUp()
[SetUp]
public void SetUp()
{
ThreadSetup();
}
[OneTimeTearDown]
public void FixtureTearDown()
[TearDown]
public void TearDown()
{
// cleanup storage
var storage = CreateStorage();
storage.FreeNamedDataSlot("key");
storage.FreeNamedDataSlot("KEY");
storage.FreeNamedDataSlot("KeY");
ThreadCleanup();
}
[TearDown]
public void TearDown()
{
// cleanup storage
IThreadStorage storage = CreateStorage();
storage.FreeNamedDataSlot("key");
storage.FreeNamedDataSlot("KEY");
storage.FreeNamedDataSlot("KeY");
}
[Test]
public void IsCaseSensitive()
{
IThreadStorage storage = CreateStorage();
var storage = CreateStorage();
object value1 = new object();
object value2 = new object();
object value3 = new object();
var value1 = new object();
var value2 = new object();
var value3 = new object();
storage.SetData("key", value1);
storage.SetData("KEY", value2);
@@ -84,10 +82,10 @@ namespace Spring.Threading
[Test]
public void AllowReplaceData()
{
IThreadStorage storage = CreateStorage();
var storage = CreateStorage();
object value1 = new object();
object value2 = new object();
var value1 = new object();
var value2 = new object();
storage.SetData("key", value1);
Assert.AreSame(value1, storage.GetData("key"));
@@ -100,7 +98,7 @@ namespace Spring.Threading
[Test]
public void UnknownKeyReturnsNull()
{
IThreadStorage storage = CreateStorage();
var storage = CreateStorage();
Assert.AreSame(null, storage.GetData("key"));
}
@@ -108,9 +106,9 @@ namespace Spring.Threading
[Test]
public void FreeNamedDataSlotRemovesData()
{
IThreadStorage storage = CreateStorage();
var storage = CreateStorage();
object value1 = new object();
var value1 = new object();
storage.SetData("key", value1);
Assert.AreSame(value1, storage.GetData("key"));
storage.FreeNamedDataSlot("key");
@@ -120,15 +118,15 @@ namespace Spring.Threading
[Test]
public void UsesDistinguishedStorageOnDifferentThreads()
{
IThreadStorage storage = CreateStorage();
var storage = CreateStorage();
object value1 = new object();
var value1 = new object();
storage.SetData("key", value1);
ThreadTestHelper helper = new ThreadTestHelper(this,storage);
var helper = new ThreadTestHelper(this, storage);
helper.Execute();
Assert.AreNotSame( value1, helper.value );
Assert.AreNotSame(value1, helper.value);
Assert.IsNull(helper.value);
}
@@ -149,7 +147,7 @@ namespace Spring.Threading
public void Execute()
{
Thread t = new Thread(new ThreadStart(this.Run));
var t = new Thread(new ThreadStart(Run));
t.Start();
t.Join();
}
@@ -157,7 +155,7 @@ namespace Spring.Threading
private void Run()
{
outer.ThreadSetup();
value = this.storage.GetData("key");
value = storage.GetData("key");
}
}

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -50,6 +50,7 @@ namespace Spring.Data.NHibernate.Config
}
[Test]
[Ignore("TODO Connects to database")]
public void ProxyDataAccessAndServiceLayer()
{
Assert.IsFalse(AopUtils.IsAopProxy( ctx["DbProvider"] ));

View File

@@ -26,9 +26,6 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\GenCommonAssemblyInfo.cs">
<Link>GenCommonAssemblyInfo.cs</Link>
</Compile>
<EmbeddedResource Include="Messaging\Ems\Core\EmsTemplateTests.xml" />
<EmbeddedResource Include="Messaging\Ems\Config\EmsNamespaceHandlerTests.xml" />
<EmbeddedResource Include="Messaging\Ems\Listener\SimpleMessageListenerContainerTests.xml" />

View File

@@ -19,13 +19,11 @@
<PackageReference Include="NUnit3TestAdapter" Version="$(NUnitTestAdapterVersion)" />
</ItemGroup>
<ItemGroup>
<Content Include="App.config">
<None Include="App.config">
<Link>testhost.dll.config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</None>
<EmbeddedResource Include="Messaging\Nms\Integration\SimpleMessageListenerContainerTests.xml" />
<EmbeddedResource Include="Messaging\Nms\Config\NmsNamespaceHandlerTests.xml" />
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy &quot;$(ProjectDir)App.config&quot; &quot;$(OutDir)testhost.dll.config&quot;" />
</Target>
</Project>

View File

@@ -569,7 +569,7 @@ namespace Spring.Scheduling.Quartz
factoryObject.AfterPropertiesSet();
await factoryObject.Start();
Thread.Sleep(500);
await Task.Delay(TimeSpan.FromSeconds(1));
Assert.IsTrue(DummyJob.count > 0);
Assert.AreEqual(DummyJob.count, taskExecutor.count);
@@ -601,7 +601,7 @@ namespace Spring.Scheduling.Quartz
factoryObject.AfterPropertiesSet();
await factoryObject.Start();
DummyRunnable.runEvent.WaitOne(500);
DummyRunnable.runEvent.WaitOne(1000);
Assert.IsTrue(DummyRunnable.count > 0);
factoryObject.Dispose();
@@ -742,7 +742,7 @@ namespace Spring.Scheduling.Quartz
factoryObject.AfterPropertiesSet();
await factoryObject.Start();
Thread.Sleep(500);
await Task.Delay(TimeSpan.FromSeconds(1));
Assert.AreEqual(10, DummyRunnable.param);
Assert.IsTrue(DummyRunnable.count > 0);
@@ -777,7 +777,7 @@ namespace Spring.Scheduling.Quartz
factoryObject.AfterPropertiesSet();
await factoryObject.Start();
Thread.Sleep(500);
await Task.Delay(TimeSpan.FromSeconds(1));
Assert.AreEqual(10, DummyJobObject.param);
Assert.IsTrue(DummyJobObject.count > 0);
@@ -800,7 +800,7 @@ namespace Spring.Scheduling.Quartz
factoryObject.AfterPropertiesSet();
await factoryObject.Start();
Thread.Sleep(500);
await Task.Delay(TimeSpan.FromSeconds(1));
Assert.AreEqual(10, DummyJob.param);
Assert.IsTrue(DummyJob.count > 0);

View File

@@ -0,0 +1,35 @@
#region License
// /*
// * Copyright 2018 the original author or authors.
// *
// * Licensed under the Apache License, Version 2.0 (the "License");
// * you may not use this file except in compliance with the License.
// * You may obtain a copy of the License at
// *
// * http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// */
#endregion
using NUnitAspEx;
using NUnitAspEx.Client;
namespace Spring.Web.Conversation
{
public static class HttpWebclientExtensions
{
public static HttpWebClient CreateClientWithDefaultPort(this IAspFixtureHost host)
{
HttpWebClient clnt = host.CreateWebClient();
// fix port which otherwise defaults to -1 breaking everything
clnt.BaseAddress = clnt.BaseAddress.Replace("aspfixturehost/", "aspfixturehost:80/");
return clnt;
}
}
}

View File

@@ -92,7 +92,7 @@
<assemblyIdentity name="System.Data.SQLite"
publicKeyToken="db937bc2d44ff139"
culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.91.0"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.113.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -1,7 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<Configurations>Debug;Release</Configurations>
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.csproj" />
@@ -15,16 +16,13 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftTestSDKVersion)" />
<PackageReference Include="NUnit" Version="$(NUnitVersion)" />
<PackageReference Include="NUnit3TestAdapter" Version="$(NUnitTestAdapterVersion)" />
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.113.7" PrivateAssets="None" />
</ItemGroup>
<ItemGroup>
<Reference Include="NUnitAspEx">
<HintPath>..\..\..\lib\Net\2.0\NUnitAspEx.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<HintPath>..\Spring.Web.Conversation.NHibernate5.Tests\lib\net\2.0\System.Data.SQLite.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Web" />
</ItemGroup>
<ItemGroup>
@@ -61,4 +59,5 @@
<Content Include="Data\Spring\Conversation\WebConversationStateTest\TimeOut_WithTimeOut.aspx" />
<EmbeddedResource Include="Entities\*.hbm.xml" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,22 @@
using System;
using System.IO;
using NUnit.Framework;
namespace Spring
{
[SetUpFixture]
public class TestAssemblySetup
{
[OneTimeSetUp]
public void SetUp()
{
// work around getting interop assembly to correct directory
var requiredFile = Path.Combine(Environment.CurrentDirectory, "SQLite.Interop.dll");
var fileToUse = Path.Combine(Environment.CurrentDirectory, "x86", "SQLite.Interop.dll");
if (!File.Exists(requiredFile) && File.Exists(fileToUse))
{
File.Copy(fileToUse, requiredFile);
}
}
}
}

View File

@@ -8,12 +8,4 @@
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.0.80.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -28,7 +28,14 @@
</ItemGroup>
<ItemGroup>
<Compile Include="..\Spring.Core.Tests\TestAssemblySetup.cs" Link="TestAssemblySetup.cs" />
<Content Include="Data\**\*" CopyToOutputDirectory="PreserveNewest" />
<None Include="Data\**\*">
<Link>Data\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Data\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="Data\Spring\Context\Support\WebApplicationContextTests\Dummy.aspx" />
<Content Include="Data\Spring\Objects\Factory\Support\TestForm.aspx" />
<Content Include="Data\Spring\Web\Support\LocalResourceManagerTests\WithoutResources.aspx" />
@@ -42,7 +49,4 @@
<EmbeddedResource Include="Context\Support\*.xml" />
<EmbeddedResource Include="Web\Support\ControlInterceptionTests.objects.xml" />
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="xcopy &quot;$(ProjectDir)Data&quot; &quot;$(OutDir)&quot; /y /s /q /d" />
</Target>
</Project>

View File

@@ -1,7 +1,7 @@
#region License
/*
* Copyright © 2002-2011 the original author or authors.
* Copyright © 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.