I am developing a .NET application on a Surface device with a Snapdragon X Elite processor (Windows 11 ARM64). I am unable to run the Temporal .NET SDK natively because the required native bridge libraries (temporal_sdk_bridge) are missing for the win-arm64 runtime identifier.
Current Behavior
When attempting to initialize a TemporalClient on a Windows ARM64 device, the application crashes with a DllNotFoundException:
Unable to load DLL 'temporal_sdk_bridge' or one of its dependencies: The specified module could not be found.
Steps to Reproduce
-
Create a new .NET 8/9 console application on a Windows ARM64 device (e.g., Surface Pro 11).
-
Install the
TemporalioNuGet package (latest version). -
Attempt to connect to a Temporal server:
awaitTemporalClient.ConnectAsync(newTemporalClientConnectOptions { TargetHost = "localhost:7233" }); -
Application crashes immediately.
Workarounds Attempted
I tried forcing the application to run under x64 emulation by setting <RuntimeIdentifier>win-x64</RuntimeIdentifier> and <PlatformTarget>x64</PlatformTarget>.
While this allows the temporal_sdk_bridge.dll (x64 version) to be present, it introduces downstream issues with other native dependencies (like grpc_csharp_ext.x64.dll) causing BadImageFormatException during assembly scanning, and generally degrades performance due to emulation.
Request
With the increasing popularity of Windows on ARM devices (Surface, ThinkPad, Dell XPS with Snapdragon), native support is becoming critical for developers.
Could you please:
-
Provide a
win-arm64build of thetemporal_sdk_bridgein future NuGet packages? -
Alternatively, provide instructions on how to manually build the bridge for Windows ARM64 if a pre-built binary isn’t planned soon?
Environment
-
Device: Microsoft Surface (Snapdragon X Elite)
-
OS: Windows 11 24H2 (ARM64)
-
.NET Version: .NET 9.0
-
Temporal SDK Version: [1.9.0]