有没有办法在 visual studio 团队服务中更改默认线程文化

Is there a way to change the default thread culture in visual studio team service

我在美国地区有一个 VSTS 帐户。我有一堆单元测试,运行 在我的本地服务器上成功。但是当部署到 VSTS 时,所有与日期时间相关的测试都失败了。我想这是因为日期时间格式的解释不同,因为我当地使用的是英国格式。因为测试项目比较多,不是单独改,有没有什么办法可以把VSTS默认线程的当前文化改成UK呢?我知道更改区域可能会成功,但还有其他方法吗?

当然,有很多可能,但确保您的应用程序正确处理意外部署到具有不同文化的计算机是一个更好的主意。

您基本上已经发现了您的代码的意外和不需要的行为,或者您已经检测到您无法 运行 在不同的文化中。

我个人会尝试使代码更具弹性,例如明确设置正确的文化并尽可能依赖 InvariantCulture。

如果您想要简单的方法,可以执行以下操作之一:

使用初始化器

将一种方法添加到您的测试项目并且decorate it with the [AssemblyInitializer] attribute:

[TestClass()]
public sealed class CultureInitializer
{
    [AssemblyInitialize()]
    public static void AssemblyInit(TestContext context)
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
        Thread.CurrentThread.CurrentUiCulture = new CultureInfo("en-GB");
    }
}

强制用户配置文件文化设置

我建议您不要这样做,虽然不应该这样做,但它可能会影响其他进程 运行 在您的测试之后,更改输出格式或导致其他与您现在的行为类似的不良行为体验。

数据存储在注册表中的以下位置:

HKEY_CURRENT_USER\Control Panel\International

您需要在开始测试之前更改该值,因为这些值是在启动应用程序时从系统中读取的,除非您注册这些值更改时要发出信号的事件,否则您的测试将不会看到不同。

运行 测试开始前构建定义中的脚本

Set-Culture -CultureInfo en-GB