-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Microsoft.WindowsDesktop.App.Runtime.win-arm64 contains a stub "D3DCompiler_47.dll", causing issues with 3rd party libraries #5462
Comments
I think we should rename it to |
Thank you for the report, @kpreisser. Does the failure only occur when publishing as a self-contained application? |
Because ARM64 WPF support doesn't include operating system versions that don't contain inbox d3dcompiler_47.dll (the shader compiler), d3dcompiler_47.dll can be excluded from the ARM64 WindowsDesktop SDK. It will always be in system32 on Windows10+. It looks this property was meant to exclude d3dcompiler_47.dll from being copied and included in the package: Setting |
Hi @ryalanms,
👍 Additionally, the current Windows 11 SDK (22000) seems to only include redistributables of Thank you! |
This commit successfully removes the dll from the transport package for ARM64. |
(originally commented in #5747) I'm having issues with this on my app. Can this be back-ported to .NET 6.0.4? I'm going to wait until next LTS for upgrade so I would be stuck not being able to support arm64 users until .NET 8 (~1.5 years). |
@hamarb123 Could you see #5747 ? |
You mean see the PR? Yes, I commented on it. |
@hamarb123 Sorry, I thought this issue was fixed. |
It's fixed in .NET 7 (apparently), but not for .NET 6 (I'm using 6.0.3). |
@hamarb123 I remember it was merged into 6.0.3, let me check. Sorry. |
The bad news is it do not merge to 6.0.3... |
Okay. Will it be in 6.0.4? |
@hamarb123 I ask @singhashish-wpf in #5747 (comment) And If you can't wait, you can try building the private version.
|
We are in process of pushing this to 6.0 servicing, earliest you can expect it to be in June servicing release. |
Okay, thanks! |
.Net 6.0.6 was just released and contains the fix for this issue: |
Thank you for fixing this issue and back-porting it to 6.0.6! I can confirm that Microsoft.WindowsDesktop.App.Runtime.win-arm64 6.0.6 no longer contains the stub |
Problem description:
When publishing a WPF app targeting .NET 5.0/6.0 for
win-arm64
(self-contained), aD3DCompiler_47.dll
file is deployed in the application directory. However, in contrast to the file from the WindowsSystem32
directory which has ~7 MB and has exports likeD3DCompile
, the file deployed by the .NET SDK has only ~23 KB and doesn't seem to have exports (it comes from the Microsoft.WindowsDesktop.App.Runtime.win-arm64 package).Apparently, the presence of this stub DLL can cause issues with 3rd party libraries like CefSharp (embedded Chromium browser), because CEF also depends on
D3DCompiler_47.dll
. In some cases when starting the application, the chromium browser hangs, and the log file contains an error that it cannot find theD3DCompile
entry point:Note: This doesn't occur when publishing the application for
win-x86
andwin-x64
, because there, a file with a different nameD3DCompiler_47_cor3.dll
is deployed instead ofD3DCompiler_47.dll
(#37 (comment)), and that file seems to be a copy from the Windows SDK redist files with all the necessary exports.See also cefsharp/CefSharp#2944 (comment).
Minimal repro:
dotnet publish -f net5.0-windows -r win-arm64
.D3DCompile
entry point) are logged toTestCefSharpChromiumLog.txt
.D3DCompiler_47.dll
from the app's directory and also remove the corresponding entry in theTestCefSharpWpf.deps.json
file, and start the app again.D3DCompiler_47.dll
from the Windowssystem32
directory).Is this stub
D3DCompiler_47.dll
file forwin-arm64
really needed?Actual behavior:
A stub
D3DCompiler_47.dll
is deployed when publishing the application, which can cause an issue in CEF as it may load that stub file instead of the one from the Windowssystem32
directory.Expected behavior:
No
D3DCompiler_47.dll
file is deployed, so that CEF can load the file from the Windowssystem32
directory (or, a file with a different name likeD3DCompiler_47_cor3.dll
like in thewin-x86
andwin-arm64
packages is deployed; although that file would probably be superfluous forwin-arm64
).Thank you!
The text was updated successfully, but these errors were encountered: