diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 49a74f8..38b79f9 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -36,8 +36,9 @@ jobs:
- name: Verify Git tags for MinVer
run: |
git fetch --tags --force
- git describe --tags
- git tag --points-at HEAD
+ echo "Checking for tags..."
+ git describe --tags 2>/dev/null || echo "No tags found yet - this is expected for first release"
+ git tag --points-at HEAD || echo "No tag at current commit"
- name: Restore dependencies
run: dotnet restore
diff --git a/Directory.Packages.props b/Directory.Packages.props
index ee63568..ae5452c 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -10,17 +10,23 @@
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/src/CountryData.Globalization.Hosting/CountryData.Globalization.Hosting.csproj b/src/CountryData.Globalization.Hosting/CountryData.Globalization.Hosting.csproj
index b469250..61f0dd5 100644
--- a/src/CountryData.Globalization.Hosting/CountryData.Globalization.Hosting.csproj
+++ b/src/CountryData.Globalization.Hosting/CountryData.Globalization.Hosting.csproj
@@ -1,8 +1,8 @@
-
- netstandard2.1;net8.0;net9.0;net10.0
+
+ netstandard2.0;net6.0;net8.0;net10.0
latest
enable
enable
@@ -46,7 +46,8 @@ Initial release v1.0.0:
- AddCountryData() extension method
- Singleton lifetime management for ICountryDataProvider
- Full ASP.NET Core integration support
-- Multi-framework support (.NET Standard 2.1, .NET 8-10)
+- Multi-framework support (.NET Standard 2.0+, .NET 6, 8, 10)
+- Works with .NET Framework 4.6.1+, .NET Core 2.0+, Unity, Xamarin
diff --git a/src/CountryData.Globalization/CountryData.Globalization.csproj b/src/CountryData.Globalization/CountryData.Globalization.csproj
index ab91a69..a9592a0 100644
--- a/src/CountryData.Globalization/CountryData.Globalization.csproj
+++ b/src/CountryData.Globalization/CountryData.Globalization.csproj
@@ -1,8 +1,8 @@
-
- netstandard2.1;net8.0;net9.0;net10.0
+
+ netstandard2.0;net6.0;net8.0;net10.0
latest
enable
enable
@@ -49,8 +49,9 @@ Initial release v1.0.0:
- Full CultureInfo and RegionInfo integration
- O(1) dictionary lookups with lazy-loaded caches
- Thread-safe operations with immutable data collections
-- Zero external dependencies
-- Multi-framework support (.NET Standard 2.1, .NET 8-10)
+- Minimal external dependencies (only System.Text.Json)
+- Multi-framework support (.NET Standard 2.0+, .NET 6, 8, 10)
+- Works with .NET Framework 4.6.1+, .NET Core 2.0+, Unity, Xamarin
- Built-in dependency injection support via CountryData.Globalization.Hosting package
@@ -97,6 +98,7 @@ Initial release v1.0.0:
+
diff --git a/src/CountryData.Globalization/Models/Country.cs b/src/CountryData.Globalization/Models/Country.cs
index 0881bee..9beb794 100644
--- a/src/CountryData.Globalization/Models/Country.cs
+++ b/src/CountryData.Globalization/Models/Country.cs
@@ -2,24 +2,24 @@
{
///
/// Represents a country with its associated data including ISO codes, names, phone codes, regions, and Unicode emoji flag.
- ///
+ ///
///
public class Country
{
///
/// Gets or sets the full country name (e.g., "United States", "Canada", "Japan").
///
- public required string CountryName { get; set; }
+ public string CountryName { get; set; } = string.Empty;
///
/// Gets or sets the international phone code for the country (e.g., "+1", "+44", "+81").
///
- public required string PhoneCode { get; set; }
+ public string PhoneCode { get; set; } = string.Empty;
///
/// Gets or sets the ISO 3166-1 alpha-2 country code (e.g., "US", "CA", "JP").
///
- public required string CountryShortCode { get; set; }
+ public string CountryShortCode { get; set; } = string.Empty;
///
/// Gets or sets the Unicode emoji flag representing the country (e.g., "🇺🇸", "🇨🇦", "🇯🇵").
diff --git a/src/CountryData.Globalization/Models/Region.cs b/src/CountryData.Globalization/Models/Region.cs
index 7e70939..d79e2f8 100644
--- a/src/CountryData.Globalization/Models/Region.cs
+++ b/src/CountryData.Globalization/Models/Region.cs
@@ -8,7 +8,7 @@ public class Region
///
/// Gets or sets the full region name (e.g., "California", "Ontario", "Tokyo").
///
- public required string Name { get; set; }
+ public string Name { get; set; } = string.Empty;
///
/// Gets or sets the region short code (e.g., "CA", "ON", "13").
diff --git a/src/CountryData.Globalization/Services/CountryDataProvider.cs b/src/CountryData.Globalization/Services/CountryDataProvider.cs
index 0d40487..8e14f1f 100644
--- a/src/CountryData.Globalization/Services/CountryDataProvider.cs
+++ b/src/CountryData.Globalization/Services/CountryDataProvider.cs
@@ -373,7 +373,17 @@ public IEnumerable GetAllCulturesForCountry(string shortCode)
try
{
var cultureName = $"{languageCode}-{shortCode}";
- return CultureInfo.GetCultureInfo(cultureName);
+ var culture = CultureInfo.GetCultureInfo(cultureName);
+
+ // Validate that the culture actually exists in the system
+ // This ensures consistent behavior across Windows/Linux
+ var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
+ if (!allCultures.Any(c => c.Name.Equals(cultureName, StringComparison.OrdinalIgnoreCase)))
+ {
+ return null;
+ }
+
+ return culture;
}
catch
{
diff --git a/tests/CountryData.Globalization.Tests/CountryData.Globalization.Tests.csproj b/tests/CountryData.Globalization.Tests/CountryData.Globalization.Tests.csproj
index e4d0bf7..906a0ed 100644
--- a/tests/CountryData.Globalization.Tests/CountryData.Globalization.Tests.csproj
+++ b/tests/CountryData.Globalization.Tests/CountryData.Globalization.Tests.csproj
@@ -8,11 +8,11 @@
-
-
-
-
-
+
+
+
+
+