Ошибка «System.Management в настоящее время поддерживается только для настольных приложений Windows» при динамической заC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка «System.Management в настоящее время поддерживается только для настольных приложений Windows» при динамической за

Сообщение Anonymous »

Я использую пакет «Microsoft.Windows.Compatibility», чтобы получить серийный номер основной платы в приложении .NET 6. Мой код выглядит так:
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
var mobos = searcher.Get();

foreach (var m in mobos)
{
return m["SerialNumber"].ToString() ?? "";
}

Когда я запускаю этот код в консольном приложении, он работает правильно. Однако когда я создаю DLL, которая выполняет этот код, и динамически загружаю эту DLL с помощью LoadContext, я получаю следующую ошибку:
System.Management currently is only supported for Windows desktop applications.

Как решить эту проблему?
Проверенная установка пакета: убедитесь, что пакет «Microsoft.Windows.Compatibility» установлен и на него есть ссылка в обоих консольное приложение и проект DLL.
Целевая платформа: подтверждено, что и консольное приложение, и проект DLL ориентированы на .NET.
Это загрузчик DLL:
string dll_Path = Path.GetFullPath(dll_name);
var loadContext = new LoadContext(dll_Path);
var assembly = loadContext.LoadFromAssemblyPath(dll_Path);
Type type = assembly.GetType("MyClass");
MethodInfo method = type.GetMethod("MyMethod");
T function = (T)Delegate.CreateDelegate(typeof(T), method);
function.DynamicInvoke(inputs);


Подробнее здесь: https://stackoverflow.com/questions/786 ... plications
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»