Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在基于Linux的Azure DevOps代理上找不到时区ID_C#_.net Core - Fatal编程技术网

C# 在基于Linux的Azure DevOps代理上找不到时区ID

C# 在基于Linux的Azure DevOps代理上找不到时区ID,c#,.net-core,C#,.net Core,我曾尝试使用TimeZoneConverter库和如下代码来识别正确的时区ID,但是在基于Linux的代理上运行dotnet test时,它总是返回与Windows兼容的ID 如何在Linux计算机上运行测试并在Windows计算机上运行项目,而不获取此异常System.TimeZoneNotFoundException:在本地计算机上找不到时区ID“E.南美标准时间”。 public static TimeZoneInfo GetOSSpecificTimeZone() { retu

我曾尝试使用
TimeZoneConverter
库和如下代码来识别正确的时区ID,但是在基于Linux的代理上运行
dotnet test
时,它总是返回与Windows兼容的ID

如何在Linux计算机上运行测试并在Windows计算机上运行项目,而不获取此异常
System.TimeZoneNotFoundException:在本地计算机上找不到时区ID“E.南美标准时间”。

public static TimeZoneInfo GetOSSpecificTimeZone() 
{
    return TimeZoneInfo.GetSystemTimeZones().Any(x => x.Id == "E. South America Standard Time") ? 
        TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time") : 
        TimeZoneInfo.FindSystemTimeZoneById("America/Sao_Paulo");
}

对不起,我没听懂。为什么有相似的身份证?每个平台的ID都是正确的,第一个在Windows上可用,第二个仅在Linux上可用。问题是GetSystemTimeZones()返回第一个可用的时区,但它不是。无论我使用的是NET 4.7(Windows)还是.NET 5(Linux),它都可以工作。您有办法重现此问题吗?您的最佳选择可能是使用第一个值进行
FindSystemTimeZoneById
调用。如果它抛出异常,请尝试第二个值。这样就不需要调用
GetSystemTimeZones