From 81d9fc10b8f82312901d689c80e45905ad906640 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Thu, 25 Dec 2025 15:48:02 +0000 Subject: [PATCH 1/5] Enhance tag verification step in CI/CD pipeline with informative messages --- .github/workflows/ci-cd.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 From 2235339924e479811679b04da22c4a9941165236 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Thu, 25 Dec 2025 15:50:56 +0000 Subject: [PATCH 2/5] Update package versions in Directory.Packages.props and CountryData.Globalization.Tests.csproj for consistency and improvements --- Directory.Packages.props | 9 +++++---- .../CountryData.Globalization.Tests.csproj | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index ee63568..342d5dc 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -13,14 +13,15 @@ + - - - - + + + + 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 @@ - - - - - + + + + + From 4e0bc7b81568328a2dab9855555f6e4c89bdd964 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Thu, 25 Dec 2025 16:36:17 +0000 Subject: [PATCH 3/5] Update target frameworks for broader compatibility and add System.Text.Json package --- Directory.Packages.props | 5 +++++ .../CountryData.Globalization.Hosting.csproj | 7 ++++--- .../CountryData.Globalization.csproj | 12 +++++++----- src/CountryData.Globalization/Models/Country.cs | 8 ++++---- src/CountryData.Globalization/Models/Region.cs | 2 +- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 342d5dc..ae5452c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,6 +10,11 @@ + + + + + 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..543f2d3 100644 --- a/src/CountryData.Globalization/CountryData.Globalization.csproj +++ b/src/CountryData.Globalization/CountryData.Globalization.csproj @@ -1,9 +1,9 @@  - - netstandard2.1;net8.0;net9.0;net10.0 - latest + + 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"). From 68405be5353a65d183398a18ad44a36ddb9e78c1 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Thu, 25 Dec 2025 16:38:01 +0000 Subject: [PATCH 4/5] Update target frameworks for broad compatibility and add descriptive comment --- .../CountryData.Globalization.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CountryData.Globalization/CountryData.Globalization.csproj b/src/CountryData.Globalization/CountryData.Globalization.csproj index 543f2d3..a9592a0 100644 --- a/src/CountryData.Globalization/CountryData.Globalization.csproj +++ b/src/CountryData.Globalization/CountryData.Globalization.csproj @@ -1,9 +1,9 @@  - + netstandard2.0;net6.0;net8.0;net10.0 -\ latest + latest enable enable From 91c7339eedd34601feb5147750d8fccdca9b626e Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Thu, 25 Dec 2025 16:43:36 +0000 Subject: [PATCH 5/5] Add culture validation to ensure consistent behavior across platforms --- .../Services/CountryDataProvider.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 {