C# 如何在.NET中启用程序集绑定失败日志记录(Fusion)
如何在.NET中启用程序集绑定失败日志记录(Fusion)?设置以下注册表值: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion!EnableLog](DWORD)到1 要禁用,请设置为0或删除该值 [编辑]:将以下文本保存到中的文件,例如FusionEnableLog.reg Windows注册表编辑器格式:C# 如何在.NET中启用程序集绑定失败日志记录(Fusion),c#,.net,vb.net,binding,assemblies,C#,.net,Vb.net,Binding,Assemblies,如何在.NET中启用程序集绑定失败日志记录(Fusion)?设置以下注册表值: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion!EnableLog](DWORD)到1 要禁用,请设置为0或删除该值 [编辑]:将以下文本保存到中的文件,例如FusionEnableLog.reg Windows注册表编辑器格式: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Micro
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
然后从windows资源管理器运行该文件,忽略有关可能损坏的警告。将以下值添加到 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\) HKEY\U本地\U机器\SOFTWARE\Microsoft\Fusion 加: DWORD ForceLog将值设置为1 DWORD LogFailures将值设置为1 DWORD LogResourceBinds将设置值绑定为1 DWORD EnableLog将值设置为1 日志文件夹的字符串日志路径设置值(例如C:\FusionLog\) 确保在文件夹名称后包含反斜杠,并且文件夹存在 您需要重新启动正在运行的程序,以强制它读取这些注册表设置 顺便说一句,不要忘记在不需要时关闭fusion日志记录
如果您的计算机上安装了Windows SDK,您将在Microsoft SDK\Tools下找到“Fusion日志查看器”(只需在Vista或Windows 7/8的“开始”菜单中键入“Fusion”)。启动它,单击设置按钮,然后选择“记录绑定失败”或“记录所有绑定”
如果禁用这些按钮,请返回“开始”菜单,右键单击日志查看器,然后选择“以管理员身份运行”。我通常使用Fusion日志查看器(从“开始”菜单或Fusion日志查看器)-我的标准设置为:
- 以管理员身份打开Fusion日志查看器
- 单击设置
- 选中启用自定义日志路径复选框
- 输入要写入日志的位置,例如,
(重要提示:确保您已在文件系统中实际创建此文件夹。)c:\FusionLogs
- 确保启用了正确的日志级别(我有时只需选择“将所有绑定记录到磁盘”
在某些情况下,要让它正常工作有时是很棘手的。这个脚本效果很好,也被列入了。我个人使用它多年了,它从未让我失望。如果您已经启用了日志功能,但在64位Windows 7上仍然出现此错误,请在IIS 7.5中尝试此操作:
只是一点点可能帮助他人的信息;如果您在某个目录中搜索所有程序集以查找继承/实现类/接口的类,那么如果您发现与您自己的程序集之一有关的此错误,请确保清除过时的程序集 该场景类似于:
如果发生这种情况,唯一的信号就是错误消息中的名称空间和类名。仔细检查。如果在解决方案中的任何位置都找不到它,则可能试图加载过时的程序集。您也可以通过打开DotnetRuntime专用提供程序(
Microsoft Windows DotNETRuntimePrivate
)来激活Fusion log via,而不是使用丑陋的日志文件GUID763FD754-7086-4DFE-95EB-C01A46FAF4CA
和FusionKeyword
关键字(0x4)处于启用状态
现在,在中打开ETL文件并查看事件表时,可以找到融合数据:
您可以作为管理员运行此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
以防您想知道FusionLog.exe的位置- 你知道你有,但你找不到?在过去的几年里,我一直在寻找福斯洛夫。在迁移到.NET 4.5之后,FUSION日志的版本数量激增。 Her是可以在磁盘上找到它的位置,具体取决于您安装的软件: C:\Program Files(x86)\Microsoft SDK\Windows\v8.0A\bin\NETFX 4.0 Tools\x64 C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\Bin\x64 C:\ProgramFiles(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 SDK\Windows\v8.1A\bin\NETFX 4.5.1工具
C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin在我的示例中,帮助以小写形式键入磁盘名 错误-C:\someFolder
正确-c:\someFolder对于那些有点懒惰的人,我建议在您想要启用它时将其作为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
使用程序集绑定日志查看器(FUSLOGVW.exe),我决定编写一个名为的替代查看器它在内部使用相同的机制,但为您解析日志。您根本不必关心任何设置,甚至不必关心日志路径,也不必担心条目可能不存在—您必须创建它。至少,当我在今早坠机前准备回答这个问题时,我回答了:)飞机是怎么回事!什么意思?关键或价值
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