Я использую C# с платформой .NET 6.0 в Windows 10 и пытаюсь использовать пакет NuGet Microsoft.O365.Security.Native.ETW, соответствующий библиотеке Microsoft Krabsetw, который позволяет использовать ETW. Это репозиторий на GitHub: https://github.com/microsoft/krabsetw . Страница NuGet: https://www.nuget.org/packages/Microsoft.O365.Security.Native.ETW/
Хотя все зависимости разрешены и библиотека установлена корректно, при запуске пишет, что не может загрузить библиотеку. Это исключение:
System.IO.FileNotFoundException
HResult=0x80070002
Message=Could not load file or assembly 'Microsoft.O365.Security.Native.ETW, Version=1.0.8668.31639, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.
Source=MyProject
Проверяя зависимости библиотеки, в папке, где она была скомпилирована, я вижу, что ijwhost.dll не найден.
Хотя зависимость находится в том же каталоге, по следующему пути: runtimes\win-x64\native\Ijwhost.dll
Это структура каталога bin\Debug\net6.0-windows7.0:
Microsoft.O365.Security.Native.ETW.dllruntimes\win-x64\nativeIjwhost.dllЕсли я изменю версию .NET Framework на 5.0, все будет работать нормально. Выше 6.0 не работает ни с одной версией. Есть идеи?
@JackJJun большое спасибо за воспроизведение проблемы. Сначала я сходил с ума, думая, что это может быть проблема со мной или моим окружением. Если я найду решение или ответ от разработчиков, я также опубликую его здесь.
с нетерпением ждем вашего обновления.





@swannman ответил на вопрос в репозитории на GitHub: https://github.com/microsoft/krabsetw/issues/238
Включение Ijwhost.dll в корень каталога bin исправляет это. Его можно автоматизировать, добавив в свойства проекта следующее:
<ItemGroup>
<PackageReference Include = "Microsoft.O365.Security.Native.ETW" Version = "4.3.2">
<GeneratePathProperty>true</GeneratePathProperty>
</PackageReference>
</ItemGroup>
<Target Name = "CopyFiles" AfterTargets = "Build">
<ItemGroup>
<File Include = "$(PkgMicrosoft_O365_Security_Native_ETW)\runtimes\win-x64\native\Ijwhost.dll"></File>
</ItemGroup>
<Copy SourceFiles = "@(File)" DestinationFolder = "$(OutDir)"></Copy>
</Target>
Возможно, это не самый красивый способ, но в моем случае это позволило мне решить проблему.
Я также воспроизвел ту же проблему. Это может быть проблема, я заметил, что вы опубликовали ту же проблему на GitHub. Я рекомендую вам продолжать следить за этим случаем. И если это действительно проблема, вы можете опубликовать ответ здесь, чтобы рассказать другим, кто может столкнуться с подобными проблемами. ссылка: github.com/microsoft/krabsetw/issues/238