diff --git a/.github/workflows/build-test-linux.yml b/.github/workflows/build-test-linux.yml new file mode 100644 index 0000000000..37880ad8bf --- /dev/null +++ b/.github/workflows/build-test-linux.yml @@ -0,0 +1,34 @@ +name: Build and test on linux + +on: + workflow_call: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + # Building requires an up-to-date .NET SDK. + - name: Setup dotnet + uses: actions/setup-dotnet@v3 + with: + dotnet-version: | + 6.0.x + 7.0.x + + # Restore and build + - name: Restore dependencies + run: dotnet restore + - name: Build Nuget Versions + run: dotnet build ./tools/Explicit.NuGet.Versions/Explicit.NuGet.Versions.sln + - name: Build Release + run: dotnet build Castle.Windsor.sln -c Release + + # Run tests for linux + - name: Test on .NET 6.0 + run: | + dotnet test src/Castle.Windsor.Tests -c Release -f net6.0 --no-build --no-restore -l "console;verbosity=detailed" + dotnet test src/Castle.Facilities.AspNetCore.Tests -c Release -f net6.0 --no-build --no-restore -l "console;verbosity=detailed" + dotnet test src/Castle.Windsor.Extensions.DependencyInjection.Tests -c Release -f net6.0 --no-build --no-restore -l "console;verbosity=detailed" diff --git a/.github/workflows/build-test-win.yml b/.github/workflows/build-test-win.yml new file mode 100644 index 0000000000..94391a0b93 --- /dev/null +++ b/.github/workflows/build-test-win.yml @@ -0,0 +1,34 @@ +name: Build and test on Windows + +on: + workflow_call: + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + + # Building requires an up-to-date .NET SDK. + - name: Setup dotnet + uses: actions/setup-dotnet@v3 + with: + dotnet-version: | + 6.0.x + 7.0.x + + # Restore and build + - name: Restore dependencies + run: dotnet restore + - name: Build Release + run: dotnet build Castle.Windsor.sln -c Release + + # Run tests on windows + - name: Test on .NET Framework 4.6.2 (Windows only) + run: | + dotnet test src/Castle.Windsor.Tests -c Release -f net462 --no-build --no-restore -l "console;verbosity=detailed" + dotnet test src/Castle.Facilities.AspNet.Mvc.Tests -c Release -f net462 --no-build --no-restore -l "console;verbosity=detailed" + dotnet test src/Castle.Facilities.AspNet.SystemWeb.Tests -c Release -f net462 --no-build --no-restore -l "console;verbosity=detailed" + dotnet test src/Castle.Facilities.AspNet.WebApi.Tests -c Release -f net462 --no-build --no-restore -l "console;verbosity=detailed" + dotnet test src/Castle.Facilities.WcfIntegration.Tests -c Release -f net462 --no-build --no-restore -l "console;verbosity=detailed" \ No newline at end of file diff --git a/.github/workflows/dotnet-release.yml b/.github/workflows/dotnet-release.yml new file mode 100644 index 0000000000..1269a95389 --- /dev/null +++ b/.github/workflows/dotnet-release.yml @@ -0,0 +1,43 @@ +name: .NET Release + +on: + push: + tags: + - 'v*.*.*' + +jobs: + build-lin: + name: Build and test Linux + uses: ./.github/workflows/build-test-linux.yml + + build-win: + name: Build and test on Windows + uses: ./.github/workflows/build-test-win.yml + + deploy: + needs: [build-lin, build-win] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + # Building requires an up-to-date .NET SDK. + - name: Setup dotnet + uses: actions/setup-dotnet@v3 + with: + dotnet-version: | + 6.0.x + 7.0.x + + - name: Restore dependencies + run: dotnet restore + - name: Get the version + id: get_version + run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3 | cut -d "v" -f 2) + + - name: Build + run: dotnet build Castle.Windsor.sln -c Release + - name: Pack + run: dotnet pack Castle.Windsor.sln -c Release -o artifacts -p:PackageVersion=${{ steps.get_version.outputs.VERSION }} + + - name: Push generated NuGet packages to GitHub Packages + run: dotnet nuget push "artifacts/*.nupkg" -k ${{secrets.GITHUB_TOKEN}} -s https://nuget.pkg.github.com/castleproject/index.json --skip-duplicate --no-symbols \ No newline at end of file diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml new file mode 100644 index 0000000000..250e6544e6 --- /dev/null +++ b/.github/workflows/dotnet.yml @@ -0,0 +1,16 @@ +name: .NET CI + +on: + pull_request: + branches: [ master, main ] + paths-ignore: + - '**.md' + +jobs: + build-lin: + name: Build and test Linux + uses: ./.github/workflows/build-test-linux.yml + + build-win: + name: Build and test on Windows + uses: ./.github/workflows/build-test-win.yml diff --git a/Castle.Windsor.sln b/Castle.Windsor.sln index b2e7f6ee36..d438cb73f5 100644 --- a/Castle.Windsor.sln +++ b/Castle.Windsor.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30711.63 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.33913.275 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Castle.Windsor", "src\Castle.Windsor\Castle.Windsor.csproj", "{5F6A631E-8EB1-4BC1-826D-86D3059945B8}" EndProject @@ -20,9 +20,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Castle Build", "Castle Buil .gitattributes = .gitattributes .gitignore = .gitignore appveyor.yml = appveyor.yml + .github\workflows\build-test-linux.yml = .github\workflows\build-test-linux.yml + .github\workflows\build-test-win.yml = .github\workflows\build-test-win.yml build.cmd = build.cmd CHANGELOG.md = CHANGELOG.md CONTRIBUTING.md = CONTRIBUTING.md + .github\workflows\dotnet-release.yml = .github\workflows\dotnet-release.yml + .github\workflows\dotnet.yml = .github\workflows\dotnet.yml LICENSE = LICENSE README.md = README.md EndProjectSection diff --git a/src/Castle.Facilities.AspNet.Mvc.Tests/Castle.Facilities.AspNet.Mvc.Tests.csproj b/src/Castle.Facilities.AspNet.Mvc.Tests/Castle.Facilities.AspNet.Mvc.Tests.csproj index ccb0686472..55ee79c2e6 100644 --- a/src/Castle.Facilities.AspNet.Mvc.Tests/Castle.Facilities.AspNet.Mvc.Tests.csproj +++ b/src/Castle.Facilities.AspNet.Mvc.Tests/Castle.Facilities.AspNet.Mvc.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/src/Castle.Facilities.AspNet.SystemWeb.Tests/Castle.Facilities.AspNet.SystemWeb.Tests.csproj b/src/Castle.Facilities.AspNet.SystemWeb.Tests/Castle.Facilities.AspNet.SystemWeb.Tests.csproj index 76f9f3266d..9b287d5a60 100644 --- a/src/Castle.Facilities.AspNet.SystemWeb.Tests/Castle.Facilities.AspNet.SystemWeb.Tests.csproj +++ b/src/Castle.Facilities.AspNet.SystemWeb.Tests/Castle.Facilities.AspNet.SystemWeb.Tests.csproj @@ -22,7 +22,7 @@ - + diff --git a/src/Castle.Facilities.AspNet.WebApi.Tests/Castle.Facilities.AspNet.WebApi.Tests.csproj b/src/Castle.Facilities.AspNet.WebApi.Tests/Castle.Facilities.AspNet.WebApi.Tests.csproj index af37968903..5c4bb1721d 100644 --- a/src/Castle.Facilities.AspNet.WebApi.Tests/Castle.Facilities.AspNet.WebApi.Tests.csproj +++ b/src/Castle.Facilities.AspNet.WebApi.Tests/Castle.Facilities.AspNet.WebApi.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/src/Castle.Facilities.AspNetCore.Tests/Castle.Facilities.AspNetCore.Tests.csproj b/src/Castle.Facilities.AspNetCore.Tests/Castle.Facilities.AspNetCore.Tests.csproj index 4efbaf31da..db42d80d66 100644 --- a/src/Castle.Facilities.AspNetCore.Tests/Castle.Facilities.AspNetCore.Tests.csproj +++ b/src/Castle.Facilities.AspNetCore.Tests/Castle.Facilities.AspNetCore.Tests.csproj @@ -1,13 +1,13 @@ - + - netcoreapp3.1 + net6.0 - + diff --git a/src/Castle.Facilities.AspNetCore/Castle.Facilities.AspNetCore.csproj b/src/Castle.Facilities.AspNetCore/Castle.Facilities.AspNetCore.csproj index 69d652dbda..d9e239c4ef 100644 --- a/src/Castle.Facilities.AspNetCore/Castle.Facilities.AspNetCore.csproj +++ b/src/Castle.Facilities.AspNetCore/Castle.Facilities.AspNetCore.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 @@ -18,12 +18,12 @@ Castle.Facilities.AspNetCore - - - - - - + + + + + + diff --git a/src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests.csproj b/src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests.csproj index 11b5401dc0..74829b457c 100644 --- a/src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests.csproj +++ b/src/Castle.Facilities.WcfIntegration.Tests/Castle.Facilities.WcfIntegration.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Castle.Windsor.Tests/Castle.Windsor.Tests.csproj b/src/Castle.Windsor.Tests/Castle.Windsor.Tests.csproj index 474f70187f..f0e9932ea1 100644 --- a/src/Castle.Windsor.Tests/Castle.Windsor.Tests.csproj +++ b/src/Castle.Windsor.Tests/Castle.Windsor.Tests.csproj @@ -1,7 +1,7 @@  - net462;netcoreapp3.1;net6.0 + net462;netcoreapp3.1;net6.0 @@ -47,13 +47,14 @@ - + + - + @@ -68,7 +69,7 @@ - + $(DefineConstants);FEATURE_THREADABORT;FEATURE_WPF;FEATURE_CONSOLETRACELISTENER diff --git a/src/Castle.Windsor.Tests/Config/ConfigurationTestCase.cs b/src/Castle.Windsor.Tests/Config/ConfigurationTestCase.cs index e8a6858775..83b613b5c7 100644 --- a/src/Castle.Windsor.Tests/Config/ConfigurationTestCase.cs +++ b/src/Castle.Windsor.Tests/Config/ConfigurationTestCase.cs @@ -15,7 +15,7 @@ namespace Castle.MicroKernel.Tests.Configuration { using System.Collections.Generic; - + using System.IO; using Castle.Core; using Castle.Core.Configuration; using Castle.Core.Resource; @@ -218,7 +218,8 @@ public void ShouldNotThrowCircularDependencyException() [Test] public void Can_properly_populate_array_dependency_from_xml_config_when_registering_by_convention() { - Container.Install(Configuration.FromXmlFile("config\\ComponentWithArrayDependency.config")) + var path = Path.Combine("Config", "ComponentWithArrayDependency.config"); + Container.Install(Configuration.FromXmlFile(path)) .Register(Component.For().ImplementedBy().Named("componentWithArrayDependency")); Container.Register( Classes.FromAssembly(GetCurrentAssembly()).Pick().WithServiceFirstInterface()); diff --git a/src/Castle.Windsor.Tests/LoggingFacility/BaseTest.cs b/src/Castle.Windsor.Tests/LoggingFacility/BaseTest.cs index 0fb1a91578..12616e4471 100644 --- a/src/Castle.Windsor.Tests/LoggingFacility/BaseTest.cs +++ b/src/Castle.Windsor.Tests/LoggingFacility/BaseTest.cs @@ -19,6 +19,7 @@ namespace Castle.Facilities.Logging.Tests using Castle.Services.Logging.Log4netIntegration; using Castle.Services.Logging.NLogIntegration; using Castle.Windsor; + using System.IO; /// /// Summary description for BaseTest. @@ -42,12 +43,12 @@ protected string GetConfigFile() if (typeof(TLoggerFactory) == typeof(Log4netFactory) || typeof(TLoggerFactory) == typeof(ExtendedLog4netFactory)) { - return "LoggingFacility\\log4net.facilities.test.config"; + return Path.Combine("LoggingFacility", "log4net.facilities.test.config"); } if (typeof(TLoggerFactory) == typeof(NLogFactory) || typeof(TLoggerFactory) == typeof(ExtendedNLogFactory)) { - return "LoggingFacility\\NLog.facilities.test.config"; + return Path.Combine("LoggingFacility", "NLog.facilities.test.config"); } return string.Empty; }