c# - ensure - please set the autogeneratebindingredirects




Como habilitar o log de falha de ligação de assembly(Fusion) no.NET (8)

Como faço para habilitar o log de falhas de ligação de assembly (Fusion) no .NET?


Adicione os seguintes valores para

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\)

Certifique-se de incluir a barra invertida após o nome da pasta e de que a pasta existe .

Você precisa reiniciar o programa que está sendo executado para forçá-lo a ler essas configurações do registro.

BTW, não se esqueça de desativar o log de fusão quando não for necessário.


Apenas no caso você está se perguntando sobre a localização do FusionLog.exe - Você sabe que você tem, mas você não pode encontrá-lo? Eu estava procurando FUSLOVW nos últimos anos uma e outra vez. Depois de passar para o .NET 4.5 número de versão do FUSION LOG explodiu. Ela são lugares onde ela pode ser encontrada em seu disco, dependendo do software que você instalou:

C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ Ferramentas NETFX 4.0 \ x64

C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64

C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64

Ferramentas C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0

Ferramentas C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1

C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin


Defina o seguinte valor do Registro:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) para 1

Para desativar, defina como 0 ou exclua o valor.

[edit]: Salve o seguinte texto em um arquivo, por exemplo, FusionEnableLog.reg, no Formato do Editor do Registro do Windows:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001

Em seguida, execute o arquivo do Windows Explorer e ignore o aviso sobre possíveis danos.


Em vez de usar um arquivo de log feio, você também pode ativar o log Fusion via ETW/xperf ativando o provedor Privado DotnetRuntime ( Microsoft-Windows-DotNETRuntimePrivate ) com GUID 763FD754-7086-4DFE-95EB-C01A46FAF4CA e a palavra-chave FusionKeyword (0x4) em.

@echo off
echo Press a key when ready to start...
pause
echo .
echo ...Capturing...
echo .

"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -on PROC_THREAD+LOADER+PROFILE -stackwalk Profile -buffersize 1024 -MaxFile 2048 -FileMode Circular -f Kernel.etl
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -start ClrSession -on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+763FD754-7086-4DFE-95EB-C01A46FAF4CA:0x4:0x5 -f clr.etl -buffersize 1024

echo Press a key when you want to stop...
pause
pause
echo .
echo ...Stopping...
echo .

"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -start ClrRundownSession -on Microsoft-Windows-DotNETRuntime:0x8118:0x5:'stack'+Microsoft-Windows-DotNETRuntimeRundown:0x118:0x5:'stack' -f clr_DCend.etl -buffersize 1024 

timeout /t 15

set XPERF_CreateNGenPdbs=1

"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop ClrSession ClrRundownSession 
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -stop
"C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\xperf.exe" -merge kernel.etl clr.etl clr_DCend.etl Result.etl -compress
del kernel.etl
del clr.etl
del clr_DCend.etl

Quando você abrir o arquivo ETL no PerfView e procurar na tabela Eventos, poderá encontrar os dados do Fusion:


No meu caso, ajudou a digitar o nome do disco em minúsculas

Errado - C: \ someFolder

Correto - c: \ someFolder



Se você tiver o Windows SDK instalado em sua máquina, você encontrará o "Fusion Log Viewer" em Microsoft SDK \ Tools (basta digitar "Fusion" no menu Iniciar no Vista ou no Windows 7/8). Lançamento, clique no botão Configurações e selecione "Log bind failure" ou "Log all binds".

Se esses botões estiverem desativados, volte ao menu Iniciar, clique com o botão direito do mouse no Visualizador de registros e selecione "Executar como administrador".


Você pode executar este script do Powershell como administrador para ativar o 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

Nota: Assegure-se de que o diretório fornecido para a entrada LogPath exista. Se o diretório não existir, seus logs não serão recuperáveis.

e este para desativar:

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




assemblies