我如何在.NET中启用程序集绑定失败日志记录(融合)?
当前回答
以防你想知道FusionLog.exe -的位置 你知道你有,但你找不到?在过去的几年里,我一遍又一遍地寻找FUSLOVW。在迁移到。net 4.5之后,FUSION LOG的版本数量激增。 她是可以在你的磁盘上找到它的地方,这取决于你安装的软件:
C:\Program Files (x86)\Microsoft sdk \Windows\v8.0A\bin\NETFX 4.0 Tools\x64
C:\Program Files (x86)\Microsoft sdk \Windows\v7.0A\Bin\x64
C:\Program Files (x86)\Microsoft sdk \Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64
C:\Program Files (x86)\Microsoft sdk \Windows\v8.0A\bin\NETFX 4.0工具
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools
C:\Program Files (x86)\Microsoft sdk \Windows\v7.0A\Bin
其他回答
如果你的机器上安装了Windows SDK,你会在Microsoft SDK\Tools下找到“Fusion日志查看器”(只需在Vista或Windows 7/8的开始菜单中键入“Fusion”)。启动它,单击设置按钮,并选择“日志绑定失败”或“日志所有绑定”。
如果这些按钮被禁用,返回开始菜单,右键单击日志查看器,并选择“以管理员身份运行”。
对于那些有点懒的人,我建议当你想要启用它时,把它作为一个bat文件运行:
reg add "HKLM\Software\Microsoft\Fusion" /v EnableLog /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v ForceLog /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogFailures /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogResourceBinds /t REG_DWORD /d 1 /f
reg add "HKLM\Software\Microsoft\Fusion" /v LogPath /t REG_SZ /d C:\FusionLog\
if not exist "C:\FusionLog\" mkdir C:\FusionLog
这不是回答,而是警告:
如果你曾经启用这个日志记录,不要忘记禁用它,否则你以后会后悔的。
我确实忘记了,我最终得到了几个GB的小日志文件,HTM扩展在C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\INetCache\IE文件夹中-它显然记录了NT AUTHORITY\SYSTEM帐户下运行的应用程序的所有程序集绑定。
文件数量超过300万,Total Commander和Windows资源管理器都不能显示内容或文件夹大小而不挂起。
在禁用日志记录并重新启动之后,我从命令提示符中运行了删除。
删除三星970 Pro SSD上的所有文件花了超过15分钟,它一直显示100%的磁盘使用率-我的高端PC工作站被这个删除操作弄得瘫痪,直到它完成才有部分响应。
将下列值添加到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion Add: DWORD ForceLog set value to 1 DWORD LogFailures set value to 1 DWORD LogResourceBinds set value to 1 DWORD EnableLog set value to 1 String LogPath set value to folder for logs (e.g. C:\FusionLog\)
确保在文件夹名称后包含反斜杠,并且文件夹存在。
您需要重新启动正在运行的程序,以强制它读取这些注册表设置。
顺便说一下,不要忘记在不需要的时候关闭融合日志记录。
您可以以管理员身份运行此Powershell脚本来启用FL:
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog -Value 1 -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures -Value 1 -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds -Value 1 -Type DWord
Set-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath -Value 'C:\FusionLog\' -Type String
mkdir C:\FusionLog -Force
这个要禁用:
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name ForceLog
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogFailures
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogResourceBinds
Remove-ItemProperty -Path HKLM:\Software\Microsoft\Fusion -Name LogPath