Open Symbai opened 2 years ago
NativeAOT compiler 6.0.0-*
is out-of-date and missing plenty of fixes, can you try again with 7.0.0-*
?
WbemDefPath is built-in COM. This doesn't work with trimming in general and NativeAOT implies trimming. It will have to be converted to ComWrappers.
Tagging subscribers to 'linkable-framework': @eerhardt, @vitek-karas, @LakshanF, @sbomer, @joperezr See info in area-owners.md if you want to be subscribed.
Author: | Symbai |
---|---|
Assignees: | - |
Labels: | `area-System.Management`, `untriaged`, `linkable-framework` |
Milestone: | - |
NativeAOT compiler
6.0.0-*
is out-of-date and missing plenty of fixes, can you try again with7.0.0-*
?
Unfortunately not, see https://github.com/dotnet/runtimelab/issues/1748
If anyone is looking to pick this up and needs an example of how to convert to COMWrappers, here are the PRs that converted System.Drawing.Common to use COMWrappers. They may be useful to get started on how to do it.
https://github.com/dotnet/runtime/pull/54636 https://github.com/dotnet/runtime/pull/54884
Also, check out the docs here: https://docs.microsoft.com/en-us/dotnet/standard/native-interop/tutorial-comwrappers
are there any workarounds on how to make system.management to work with nativeaot for now?
It's the same problem as #78038 that was recently closed but had a couple other people. System.Management needs to be converted to ComWrappers. It's starting to be a pretty popular request. Cc @jkoritzinsky if this is something that could be addressed with the COM source generator for .NET 8.
i managed to workaround using powershell.exe with Get-WmiObject command but indeed being able to do more advanced querying and not needing to parse the text output manually is preferred.
@ivanjx You can try WmiLight, It works for me.
A project I work on recently hit this with ManagementEventWatcher and we were unaware of the lack of trim suport until testing on release bits as only trim was enabled there. I would have expected this to repro on debug bits as we were following documentation to avoid diverged behavior on debug/release for trim.
Until this is fixed it would be great if the issue was more discoverable and not a debug/release behavior divergence.
and we were unaware of the lack of trim suport until testing on release bits as only trim was enabled there
Does your project have <PublishTrimmed>true</PublishTrimmed>
in the project file, or do you only add it as part of publish command line (or with a publish profile)? The preference is to have this in the csproj because it enables emulation of trimming behaviors in Debug builds as well - if PublishTrimmed is enabled, COM interop is disabled and you should see the same exception at runtime.
But I agree that we should either make System.Management trim safe with COM source generator, or annotate it as trim unfriendly so that the Roslyn analyzer can flag this.
Description
NativeAOT (the trimming?) breaks the body of System.Management.WbemDefPath..ctor():
I'm reporting this here since NativeAOT will be moved into this repo anyway and it's probably a trimming issue? in which case it belongs to this repo.
Reproduction Steps
In nativeAOT project:
In C# project call the export function of the nativeAOT project which executes the code above.
Expected behavior
No exception
Actual behavior
Exception
Regression?
No response
Known Workarounds
No response
Configuration
No response
Other information
It's a windows x64 DLL project publishing using
/p:NativeLib=Shared
, I'm using NativeAOT compiler nuget version6.0.0-*