¿Cómo debo buscar TimeZoneInfo de una manera independiente de la plataforma?

Estoy trabajando en portar una aplicación .NET Framework 4.5 a .NET Core 2.0 y he comenzado a hacer algunas pruebas en mi Mac. Cuando ejecuto este código en .NET Core 2.0 en Windows funciona bien:

TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");

pero arroja la siguiente excepción en Mac:

System.TimeZoneNotFoundException: The time zone ID 'Pacific Standard Time' was not found on the local computer. ---> System.IO.FileNotFoundException: Could not find file '/usr/share/zoneinfo/Pacific Standard Time'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.File.ReadAllBytes(String path)
   at System.TimeZoneInfo.TryGetTimeZoneFromLocalMachine(String id, TimeZoneInfo& value, Exception& e)
   --- End of inner exception stack trace ---
   at System.TimeZoneInfo.FindSystemTimeZoneById(String id)

Después de hurgar un poco, parece que usando la ID de zona horaria"America/Los_Angeles" soluciona el problema en la Mac.

Me pregunto qué debería hacer para mantener esta plataforma agnóstica. ¿Debería tratar de encontrar"Pacific Standard Time"y luego intenta encontrar"America/Los Angeles" en un bloque de captura? Eso parece torpe, y ¿qué pasa si otra plataforma tiene otra cadena más? ¿Hay una mejor manera de buscar el TimeZoneInfo que quiero?

Respuestas a la pregunta(1)

Su respuesta a la pregunta