C# 使用CultureAndRegionInfoBuilder将较新的区域性注册到较旧的Windows版本

C# 使用CultureAndRegionInfoBuilder将较新的区域性注册到较旧的Windows版本,c#,.net,windows-server-2012-r2,cultureinfo,regioninfo,C#,.net,Windows Server 2012 R2,Cultureinfo,Regioninfo,tl;dr:是否可以在Windows Server 2012 R2上将en BS定义并注册为区域性 我正在尝试将国际货币选项引入到我正在开发的一些软件中。这一进程本身并不困难。我使用诸如“en-US”之类的区域性代码来获取对象,并使用CultureInfo对象中的NumberFormat来格式化货币。伟大的我们在巴哈马有一些客户,所以我们希望支持的货币是巴哈马元,它来自于巴哈马文化 这在整个开发过程中都非常有效。但是在我们部署了该功能之后,尝试检索en-BS的CultureInfo时出现了以下错

tl;dr:是否可以在Windows Server 2012 R2上将en BS定义并注册为区域性

我正在尝试将国际货币选项引入到我正在开发的一些软件中。这一进程本身并不困难。我使用诸如“en-US”之类的区域性代码来获取对象,并使用CultureInfo对象中的NumberFormat来格式化货币。伟大的我们在巴哈马有一些客户,所以我们希望支持的货币是巴哈马元,它来自于巴哈马文化

这在整个开发过程中都非常有效。但是在我们部署了该功能之后,尝试检索en-BS的CultureInfo时出现了以下错误

不支持区域性。
参数名称:名称
en BS是无效的区域性标识符

在研究这个错误时,我了解到文化不是由.NET定义的,而是由操作系统定义的。Windows 10本机支持en BS。对于我的开发环境来说是个好消息!Windows Server 2012 R2不支持en BS。对我们的生产环境来说是个坏消息

所以现在看来我需要利用。这不是最方便的解决方案,但我可以让它工作。我对巴哈马币的文化差异一无所知,所以我只想获取Windows 10上定义的信息,并在我们的2012 R2服务器上注册。因为我不能通过旧服务器上的代码来提取en-BS CultureInfo,所以我认为下一个最好的办法是将CultureInfo序列化到我的开发机器上的一个文件中,并在旧服务器上反序列化该文件,然后与CultureAndRegionInfoBuilder一起使用

const string identifier = "en-BS";

string cultureFile = String.Format("{0}-Culture.txt", identifier);
string regionFile = String.Format("{0}-Region.txt", identifier);

IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(cultureFile, FileMode.Open, FileAccess.Read, FileShare.Read);
CultureInfo cultureObject = (CultureInfo)formatter.Deserialize(stream);
stream.Close();

stream = new FileStream(regionFile, FileMode.Open, FileAccess.Read, FileShare.Read);
RegionInfo regionObject = (RegionInfo)formatter.Deserialize(stream);
stream.Close();

CultureAndRegionInfoBuilder builder = new CultureAndRegionInfoBuilder(identifier, CultureAndRegionModifiers.None);
builder.LoadDataFromCultureInfo(cultureObject);
builder.LoadDataFromRegionInfo(regionObject);
builder.Register();
这并不是我写过的最优雅的代码,但它很简单,对于我将要运行一次然后永远存档的东西来说应该足够好了。不幸的是,当我尝试从文件中反序列化CultureInfo对象时,它再次以完全相同的“en-BS是无效的区域性标识符”错误击中我,好像它正在主动拒绝使用该名称的任何区域性

我不知所措。是否可以向2012 R2服务器注册en BS或任何其他不受支持的区域性