diff --git a/LibLouis.NET.sln b/LibLouis.NET.sln
deleted file mode 100644
index 17aaaf2..0000000
--- a/LibLouis.NET.sln
+++ /dev/null
@@ -1,34 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.12.35707.178
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibLouis.NET", "LibLouis.NET\LibLouis.NET.csproj", "{B1A0C040-145A-4B0E-BD5F-623D98EF578A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibLouis.NET.Test", "LibLouis.NET.Test\LibLouis.NET.Test.csproj", "{175A9E5D-8A0B-4612-8C34-5FCB2D6A9AFA}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibLouis.NET.Tables", "LibLouis.NET.Tables\LibLouis.NET.Tables.csproj", "{25835F61-956A-4FC5-8DD3-4861D8B57897}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B1A0C040-145A-4B0E-BD5F-623D98EF578A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B1A0C040-145A-4B0E-BD5F-623D98EF578A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B1A0C040-145A-4B0E-BD5F-623D98EF578A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B1A0C040-145A-4B0E-BD5F-623D98EF578A}.Release|Any CPU.Build.0 = Release|Any CPU
- {175A9E5D-8A0B-4612-8C34-5FCB2D6A9AFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {175A9E5D-8A0B-4612-8C34-5FCB2D6A9AFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {175A9E5D-8A0B-4612-8C34-5FCB2D6A9AFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {175A9E5D-8A0B-4612-8C34-5FCB2D6A9AFA}.Release|Any CPU.Build.0 = Release|Any CPU
- {25835F61-956A-4FC5-8DD3-4861D8B57897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {25835F61-956A-4FC5-8DD3-4861D8B57897}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {25835F61-956A-4FC5-8DD3-4861D8B57897}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {25835F61-956A-4FC5-8DD3-4861D8B57897}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/LibLouis.NET.slnx b/LibLouis.NET.slnx
new file mode 100644
index 0000000..4cb929b
--- /dev/null
+++ b/LibLouis.NET.slnx
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/PACKAGING.md b/PACKAGING.md
index 6089b8d..0a3b6b8 100644
--- a/PACKAGING.md
+++ b/PACKAGING.md
@@ -73,6 +73,15 @@ to the metapackage — nothing else in the repository depends on the choice.
`Directory.Build.props` is the single source of truth for the upstream version and its checksum;
the shell scripts read the values back out of it.
+The solution is `LibLouis.NET.slnx`, the XML solution format, which needs a .NET SDK of 9.0.200 or
+later. An older SDK does not report that usefully: SDK 8 fails with `MSB4068: The element
+is unrecognized`, which does not obviously mean the SDK is too old.
+
+There is deliberately no `global.json` declaring that floor. It would apply to every `dotnet`
+invocation in the repository, including inside the build container, which runs an older SDK and
+never touches the solution — it packs individual project files, which any SDK handles. Pinning the
+floor globally to satisfy one script would force the container's image up for no reason.
+
| Command | Produces |
| --- | --- |
| `./build.sh` | Linux + Windows runtime packages and the metapackage, via the container. |
diff --git a/build/build_managed_packages.sh b/build/build_managed_packages.sh
index 6a86773..08c3ca8 100755
--- a/build/build_managed_packages.sh
+++ b/build/build_managed_packages.sh
@@ -21,10 +21,10 @@ if [ -n "${NUGET_LOCAL_FEED:-}" ]; then
restore_args="-p:RestoreAdditionalProjectSources=$NUGET_LOCAL_FEED"
fi
-dotnet build --configuration Release $restore_args "$REPO_ROOT/LibLouis.NET.sln"
+dotnet build --configuration Release $restore_args "$REPO_ROOT/LibLouis.NET.slnx"
if [ -z "${SKIP_TESTS:-}" ]; then
- dotnet test --configuration Release --no-build "$REPO_ROOT/LibLouis.NET.sln"
+ dotnet test --configuration Release --no-build "$REPO_ROOT/LibLouis.NET.slnx"
fi
dotnet pack --configuration Release --no-build \
diff --git a/runtime.liblouis.crosscompile.sln b/runtime.liblouis.crosscompile.sln
deleted file mode 100644
index dd37ca6..0000000
--- a/runtime.liblouis.crosscompile.sln
+++ /dev/null
@@ -1,118 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.12.35707.178
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.liblouis", "runtime.liblouis\runtime.liblouis.csproj", "{A866FECD-8DAC-4D66-9C27-F504335B2B5F}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.linux-arm64.liblouis", "runtime.linux-arm64.liblouis\runtime.linux-arm64.liblouis.csproj", "{19428C44-3D8A-45FA-916D-9505754878D9}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.linux-x64.liblouis", "runtime.linux-x64.liblouis\runtime.linux-x64.liblouis.csproj", "{B6B095EC-9541-4396-903F-BAD3EB1094E7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.linux-x86.liblouis", "runtime.linux-x86.liblouis\runtime.linux-x86.liblouis.csproj", "{16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.win-x64.liblouis", "runtime.win-x64.liblouis\runtime.win-x64.liblouis.csproj", "{DD4CDD89-1C43-438E-B1A2-9091851F20B6}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.win-x86.liblouis", "runtime.win-x86.liblouis\runtime.win-x86.liblouis.csproj", "{3BB6EE1E-EEAB-4885-846A-C02704F012AA}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.win-arm64.liblouis", "runtime.win-arm64.liblouis\runtime.win-arm64.liblouis.csproj", "{586A3A00-2BFC-4CB0-8A26-2B2E550291F2}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Debug|x64.Build.0 = Debug|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Debug|x86.Build.0 = Debug|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Release|Any CPU.Build.0 = Release|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Release|x64.ActiveCfg = Release|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Release|x64.Build.0 = Release|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Release|x86.ActiveCfg = Release|Any CPU
- {A866FECD-8DAC-4D66-9C27-F504335B2B5F}.Release|x86.Build.0 = Release|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Debug|x64.ActiveCfg = Debug|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Debug|x64.Build.0 = Debug|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Debug|x86.ActiveCfg = Debug|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Debug|x86.Build.0 = Debug|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Release|Any CPU.Build.0 = Release|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Release|x64.ActiveCfg = Release|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Release|x64.Build.0 = Release|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Release|x86.ActiveCfg = Release|Any CPU
- {19428C44-3D8A-45FA-916D-9505754878D9}.Release|x86.Build.0 = Release|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Debug|x64.Build.0 = Debug|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Debug|x86.Build.0 = Debug|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Release|Any CPU.Build.0 = Release|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Release|x64.ActiveCfg = Release|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Release|x64.Build.0 = Release|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Release|x86.ActiveCfg = Release|Any CPU
- {B6B095EC-9541-4396-903F-BAD3EB1094E7}.Release|x86.Build.0 = Release|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Debug|x64.Build.0 = Debug|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Debug|x86.ActiveCfg = Debug|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Debug|x86.Build.0 = Debug|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Release|Any CPU.Build.0 = Release|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Release|x64.ActiveCfg = Release|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Release|x64.Build.0 = Release|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Release|x86.ActiveCfg = Release|Any CPU
- {16E1D83A-AA0A-4E4E-94E8-D5B2ACD6EDFE}.Release|x86.Build.0 = Release|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Debug|x64.ActiveCfg = Debug|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Debug|x64.Build.0 = Debug|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Debug|x86.ActiveCfg = Debug|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Debug|x86.Build.0 = Debug|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Release|Any CPU.Build.0 = Release|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Release|x64.ActiveCfg = Release|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Release|x64.Build.0 = Release|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Release|x86.ActiveCfg = Release|Any CPU
- {DD4CDD89-1C43-438E-B1A2-9091851F20B6}.Release|x86.Build.0 = Release|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Debug|x64.Build.0 = Debug|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Debug|x86.ActiveCfg = Debug|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Debug|x86.Build.0 = Debug|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Release|Any CPU.Build.0 = Release|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Release|x64.ActiveCfg = Release|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Release|x64.Build.0 = Release|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Release|x86.ActiveCfg = Release|Any CPU
- {3BB6EE1E-EEAB-4885-846A-C02704F012AA}.Release|x86.Build.0 = Release|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Debug|x64.ActiveCfg = Debug|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Debug|x64.Build.0 = Debug|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Debug|x86.ActiveCfg = Debug|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Debug|x86.Build.0 = Debug|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Release|Any CPU.Build.0 = Release|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Release|x64.ActiveCfg = Release|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Release|x64.Build.0 = Release|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Release|x86.ActiveCfg = Release|Any CPU
- {586A3A00-2BFC-4CB0-8A26-2B2E550291F2}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal