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;
}