Вам нужно еще несколько шагов, чтобы это заработало.Прежде всего, вам нужно установить свойство Channel
атрибута Event
следующим образом:
Одним из требований, предъявляемых поддержкой канала, является необходимость статической регистрации манифеста провайдера ETW.Пакет NuGet поддерживает создание файлов, необходимых для статической регистрации, как часть вашей сборки.После завершения вашей сборки запускается новый шаг, который генерирует пару файлов для каждого из типов источников событий, определенных в проекте: ..etwManifest.man и ..etwManifest.dll
Первый файл содержит ETWманифест, в то время как второй содержит двоичную форму манифеста ETW плюс все необходимые собственные ресурсы (в частности, таблицы строк локализации).
Инструментом, который генерирует два вышеупомянутых файла, является «eventRegister.exe», и он выполняет двафункции: он обеспечивает создание файлов регистрации для всех типов источников событий, для которых требуется статическая регистрация, и выполняет ряд проверок достоверности для всех типов источников событий, определенных в выходной сборке.При развертывании компонента необходимо включить эти файлы и выполнить один шаг регистрации во время установки и один шаг отмены регистрации во время удаления.
Регистрация:
wevtutil.exe im <EtwManifestManFile> /rf:"<EtwManifestDllFullPathName>" /mf:"<EtwManifestDllFullPathName>"
Отмена регистрации:
wevtutil.exe um <EtwManifestManFile>
Для статической регистрации eventRegister.exe создает манифесты, включающие всю информацию о локализации.Это необходимо, поскольку манифест генерируется во время сборки, когда нет информации о культуре, в которой будет запускаться конечное приложение.
Обратите внимание, что вы увидите, что в файле .etwManfest.man, сгенерированном сборкой,в этом файле есть пути к файлу ресурса и файлу манифеста.Это пути, которые существовали во время сборки.Эти пути НЕ используются, если вы используете параметры / rf и / mf.Таким образом, вы всегда должны указывать параметры / rf: и / mf (если вы не изменяете вручную файл .etwManifest.man, чтобы указать пути к файлу времени развертывания для DLL).Наконец, важно, чтобы вы использовали ПОЛНОСТЬЮ полные имена для параметров / mf: и / rf :.Вы можете использовать переменные окружения, которые доступны всем процессам (например,% SystemRoot% или% ProgramFiles%), но вы не должны использовать относительные пути (неясно, к чему они относятся, вероятно, System32, но не рассчитывайте на это).Общая рекомендация - скопировать ваши etwManifest.dll и .etwManifest.man в каталог в% ProgramFiles%, а затем использовать wevtutil, чтобы зарегистрировать их в этом месте.