@Will - dzięki za udostępnienie! Jako bonus - upewnij się, że działasz fuslogvw.exejako administrator, aby uniknąć problemów z prawami.
SliverNinja - MSFT
13
@Czy nie zgadzam się, że zainstalowanie fuslogvw jest „najlepszą” odpowiedzią. Jeśli możesz dostać tylko narzędzie bez konieczności instalowania całego zestawu Windows SDK w środowisku, które prawdopodobnie nie jest środowiskiem programistycznym, miałbyś rację.
Coxy
2
@Z pewnością, ale odpowiedź, do której prowadzi link, nie obejmuje żadnej z tych kwestii.
Coxy
8
@Will Nie bądź taki dziecinny. Jesteś tym, który próbuje zebrać przedstawiciela, promując odpowiedź, która choć użyteczna, społeczność uznała za mniej pomocną niż inni, jedną, która jest o wiele łatwiejsza, a drugą jest praktycznie taka sama.
Coxy,
Odpowiedzi:
868
Dodaj następujące wartości do
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
Dodaj:
Wartość DWORD ForceLog ustawiona na 1
DWORD LogFailures ustaw wartość na 1
DWORD LogResourceBinds ustaw wartość na 1
DWORD EnableLog ustaw wartość na 1
Ciąg LogPath ustawia wartość folderu dla dzienników (np. C: \ FusionLog \)
Upewnij się, że wstawiłeś ukośnik odwrotny po nazwie folderu i że folder istnieje .
Musisz ponownie uruchomić uruchomiony program, aby wymusić odczytanie tych ustawień rejestru.
Nawiasem mówiąc, nie zapomnij wyłączyć rejestrowania syntezy jądrowej, gdy nie jest to potrzebne.
Rozwiązania Gary'ego zadziałały dla mnie, chociaż musiałem też postępować, resetując IIS. Uwaga: Skonfigurowałem to w czystym środowisku, w którym nie chciałem instalować zestawów SDK i tym podobnych.
Michhes
5
Zostały zgłoszone przez niektórych, że zmiana rejestru nie zabiera od razu. Czy próbowałeś włączyć logowanie Fusion, a następnie uruchomić ponownie?
Gary Kindel,
54
Musisz ponownie uruchomić dowolny program, aby uruchomić te ustawienia rejestru
Orion Edwards
50
Fusion Log Viewer robi to wszystko za Ciebie. Przejdź do Start -> Programy -> Visual Studio xxxx> Visual Studio Tools> Visual Studio Command Prompt (uruchamiany jako administrator) i wpisz „fuslogvw”. W Ustawieniach dostosowujesz rejestrowanie.
r3mark
10
Aby włączyć / wyłączyć rejestrowanie przydatne, stworzyłem pliki .reg, które są oparte na odpowiedzi Gary'ego Kindela: włączanie i wyłączanie .
Sprawdź Włącz niestandardową ścieżkę dziennika wyboru
Wprowadź lokalizację, w której chcesz zapisać dzienniki, na przykład c:\FusionLogs( Ważne: upewnij się, że rzeczywiście utworzyłeś ten folder w systemie plików).
Upewnij się, że włączony jest odpowiedni poziom rejestrowania (czasami po prostu wybieram Rejestruj wszystkie powiązania na dysku, aby upewnić się, że wszystko działa poprawnie)
Kliknij OK
Ustaw opcję lokalizacji dziennika na Niestandardowy
Pamiętaj, aby po zakończeniu wylogować się!
(Właśnie zamieściłem to na podobne pytanie - myślę, że jest to również istotne tutaj.)
Należy pamiętać, że w przypadkach, w których środowisko uruchomieniowe jest hostowane z aplikacji macierzystej, z jakiegoś powodu konieczne będzie użycie niestandardowej ścieżki dziennika, w przeciwnym razie nic nie zostanie zarejestrowane.
jpierson
Przynajmniej w mojej sytuacji tak naprawdę nie musiałem ustawiać niestandardowych ścieżek dziennika. Wszystko, co musiałem zrobić, to włączyć logowanie, np. „Zaloguj wszystkie powiązania z dyskiem” w oknie dialogowym ustawień.
Josh
42
Uruchom jako Administrator był wymagany w moim przypadku, w przeciwnym razie wszystkie opcje byłyby wyłączone.
vezenkov
2
Uwaga: utwórz folder jako Administrator!
Tabrock,
6
Upewnij się, że działasz fuslogvwnie tylko jako administrator, ale także z właściwej ścieżki Windows SDK, z której korzysta projekt Visual Studio zgłaszający wyjątek. Sprawdź jego csproj i wyszukaj SDK wewnątrz (mój węzeł sdk ma nazwę TargetFrameworkSDKToolsDirectory). Korzystanie z non wersję dopasowanie fuslogvw zdaje się nie złapać wyjątki (co ma sens ...)
Veverke
191
Jeśli masz zainstalowany Windows SDK na swoim komputerze, znajdziesz „Fusion Log Viewer” pod Microsoft SDK \ Tools (po prostu wpisz „Fusion” w menu Start w systemie Vista lub Windows 7/8). Uruchom go, kliknij przycisk Ustawienia i wybierz „Rejestruj niepowodzenie powiązania” lub „Zaloguj wszystkie powiązania”.
Jeśli te przyciski są wyłączone, wróć do menu Start, kliknij prawym przyciskiem myszy Log Viewer i wybierz „Uruchom jako administrator”.
Nie oznacza to, że wpis prawdopodobnie nie będzie istniał - musisz go utworzyć. Przynajmniej zrobiłem, kiedy miałem odpowiedzieć na to pytanie tuż przed katastrofą dziś rano :)
Jon Skeet
3
Co robi! oznaczać? Klucz czy wartość? Co z systemami 64-bitowymi?
Bruno Martinez
48
tak naprawdę to działa ... wystarczy uruchomić iisreset afterwords, aby go uruchomić.
Nick DeMayo
4
@ Norman: Ponieważ to konkretne ustawienie służy do tego, aby błędy Asp.Net wyświetlały komunikaty o błędach wiązania zespołu na stronach błędów, a nie do zapisywania dzienników w pliku. @OP: +1. Edytowano, aby dołączyć plik .reg. The! Format nigdy nie widziałem, z wyjątkiem komunikatu o błędzie, który wysłał mnie na tę stronę w poszukiwaniu odpowiedzi.
Brian
2
Nie trzeba resetować usług IIS - tylko odpowiednią pulę aplikacji. A przynajmniej tyle musiałem zrobić.
Kenny Evitt
81
Możesz uruchomić ten skrypt Powershell jako administrator, aby włączyć FL:
Dzięki! Pozwoliłem sobie na umieszczenie twoich poleceń w tej treści . Dodałem stworzenie c:\FusionLogreż., Żeby ludzie tego nie zapomnieli ;-)
Oliver,
Zasady wiersza poleceń! Mógłbym szybko odtworzyć to przy użyciu najlepiej opracowanej do tej pory technologii wielokrotnego użytku kodu o nazwie „Wytnij i wklej”. Dzięki.
W ASP.NET czasami trudno było to poprawnie uruchomić. Ten skrypt działa świetnie i znalazł się również na liście Power Tool Scotta Hanselmana . Używam go osobiście od lat i nigdy mnie nie zawiódł.
@YuriBondarchuk aktywuje go na żądanie i masz więcej danych w ETL (inne procesy, dane filtrowania), dzięki czemu możesz przekazać pliki innym użytkownikom i mogą uzyskać DUŻO więcej informacji w porównaniu do zwykłego dziennika syntezy
stary, ratujesz mi dzień, zajęło mi to około 8 godzin, aby rozwiązać problem. Wielkie dzięki. :)
Dika Arta Karunia
3
Tylko odrobina informacji, które mogą pomóc innym; jeśli robisz coś w stylu przeszukiwania wszystkich zestawów w jakimś katalogu w poszukiwaniu klas, które dziedziczą / implementują klasy / interfejsy, to upewnij się, że wyczyściłeś przestarzałe zestawy, jeśli pojawi się błąd dotyczący jednego z twoich zestawów.
Scenariusz wyglądałby następująco:
Zespół A ładuje wszystkie zestawy w pewnym folderze
Zestaw B w tym folderze jest nieaktualny, ale odwołuje się do zestawu C
Zestaw C istnieje, ale przestrzenie nazw, nazwy klas lub inne szczegóły mogły ulec zmianie w czasie, który upłynął od czasu, gdy zestaw B stał się nieaktualny (w moim przypadku przestrzeń nazw została zmieniona w procesie refaktoryzacji)
W skrócie: A --- ładunki -> B (nieaktualne) --- referencje ---> C
W takim przypadku jedynym znakiem rozpoznawczym jest przestrzeń nazw i nazwa klasy w komunikacie o błędzie. Zbadaj to dokładnie. Jeśli nie możesz znaleźć go nigdzie w swoim rozwiązaniu, prawdopodobnie próbujesz załadować nieaktualny zestaw.
Na wszelki wypadek zastanawiasz się nad lokalizacją FusionLog.exe - wiesz, że ją masz, ale nie możesz jej znaleźć? W ciągu ostatnich kilku lat szukałem FUSLOVW w kółko. Po przejściu do .NET 4.5 wybuchła liczba wersji FUSION LOG. Są to miejsca, w których można je znaleźć na dysku, w zależności od zainstalowanego oprogramowania:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Narzędzia
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Narzędzia
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
fuslogvw.exe
jako administrator, aby uniknąć problemów z prawami.Odpowiedzi:
Dodaj następujące wartości do
Upewnij się, że wstawiłeś ukośnik odwrotny po nazwie folderu i że folder istnieje .
Musisz ponownie uruchomić uruchomiony program, aby wymusić odczytanie tych ustawień rejestru.
Nawiasem mówiąc, nie zapomnij wyłączyć rejestrowania syntezy jądrowej, gdy nie jest to potrzebne.
źródło
Zwykle używam Fusion Log Viewer ( Fuslogvw.exe z wiersza polecenia Visual Studio lub Fusion Log Viewer z menu Start) - moja standardowa konfiguracja to:
c:\FusionLogs
( Ważne: upewnij się, że rzeczywiście utworzyłeś ten folder w systemie plików).Pamiętaj, aby po zakończeniu wylogować się!
(Właśnie zamieściłem to na podobne pytanie - myślę, że jest to również istotne tutaj.)
źródło
fuslogvw
nie tylko jako administrator, ale także z właściwej ścieżki Windows SDK, z której korzysta projekt Visual Studio zgłaszający wyjątek. Sprawdź jego csproj i wyszukaj SDK wewnątrz (mój węzeł sdk ma nazwęTargetFrameworkSDKToolsDirectory
). Korzystanie z non wersję dopasowanie fuslogvw zdaje się nie złapać wyjątki (co ma sens ...)Jeśli masz zainstalowany Windows SDK na swoim komputerze, znajdziesz „Fusion Log Viewer” pod Microsoft SDK \ Tools (po prostu wpisz „Fusion” w menu Start w systemie Vista lub Windows 7/8). Uruchom go, kliknij przycisk Ustawienia i wybierz „Rejestruj niepowodzenie powiązania” lub „Zaloguj wszystkie powiązania”.
Jeśli te przyciski są wyłączone, wróć do menu Start, kliknij prawym przyciskiem myszy Log Viewer i wybierz „Uruchom jako administrator”.
źródło
Ustaw następującą wartość rejestru:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion! EnableLog] (DWORD) na 1
Aby wyłączyć, ustaw na 0 lub usuń wartość.
[edycja]: Zapisz następujący tekst w pliku, np. FusionEnableLog.reg, w formacie Windows Registry Editor:
Następnie uruchom plik z Eksploratora Windows i zignoruj ostrzeżenie o możliwych uszkodzeniach.
źródło
Możesz uruchomić ten skrypt Powershell jako administrator, aby włączyć FL:
i ten, aby wyłączyć:
źródło
c:\FusionLog
reż., Żeby ludzie tego nie zapomnieli ;-)Skrypt zmieniarka Fusion Log Settings Viewer to nie bar najlepszy sposób, aby to zrobić.
W ASP.NET czasami trudno było to poprawnie uruchomić. Ten skrypt działa świetnie i znalazł się również na liście Power Tool Scotta Hanselmana . Używam go osobiście od lat i nigdy mnie nie zawiódł.
źródło
Zamiast używać brzydkiego pliku dziennika, możesz także aktywować dziennik Fusion poprzez ETW / xperf , włączając Prywatnego dostawcę DotnetRuntime (
Microsoft-Windows-DotNETRuntimePrivate
) z GUID763FD754-7086-4DFE-95EB-C01A46FAF4CA
iFusionKeyword
włączonym słowem kluczowym (0x4).Kiedy teraz otworzysz plik ETL w PerfView i zajrzysz pod tabelę Zdarzenia, możesz znaleźć dane Fusion:
źródło
Napisałem przeglądarkę dziennika powiązań o nazwie Fusion ++ i umieściłem ją na GitHub .
Możesz pobrać najnowsze wydanie stąd lub przez chocolatey (
choco install fusionplusplus
).Mam nadzieję, że Ty i niektórzy odwiedzający możecie zaoszczędzić dzięki temu cenne minuty życia.
źródło
Jeśli masz już włączone rejestrowanie i nadal pojawia się ten błąd w 64-bitowym systemie Windows 7, wypróbuj to w IIS 7.5:
Utwórz nową pulę aplikacji
Przejdź do ustawień zaawansowanych tej puli aplikacji
Ustaw Enable 32-Bit Application na True
Wskaż swoją aplikację internetową, aby korzystała z tej nowej puli
źródło
Tylko odrobina informacji, które mogą pomóc innym; jeśli robisz coś w stylu przeszukiwania wszystkich zestawów w jakimś katalogu w poszukiwaniu klas, które dziedziczą / implementują klasy / interfejsy, to upewnij się, że wyczyściłeś przestarzałe zestawy, jeśli pojawi się błąd dotyczący jednego z twoich zestawów.
Scenariusz wyglądałby następująco:
W skrócie: A --- ładunki -> B (nieaktualne) --- referencje ---> C
W takim przypadku jedynym znakiem rozpoznawczym jest przestrzeń nazw i nazwa klasy w komunikacie o błędzie. Zbadaj to dokładnie. Jeśli nie możesz znaleźć go nigdzie w swoim rozwiązaniu, prawdopodobnie próbujesz załadować nieaktualny zestaw.
źródło
Osobom nieco leniwym zalecam uruchomienie tego pliku jako pliku nietoperza, gdy tylko chcesz go włączyć:
źródło
Na wszelki wypadek zastanawiasz się nad lokalizacją FusionLog.exe - wiesz, że ją masz, ale nie możesz jej znaleźć? W ciągu ostatnich kilku lat szukałem FUSLOVW w kółko. Po przejściu do .NET 4.5 wybuchła liczba wersji FUSION LOG. Są to miejsca, w których można je znaleźć na dysku, w zależności od zainstalowanego oprogramowania:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Narzędzia
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Narzędzia
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin
źródło
W moim przypadku pomogłem wpisać nazwę dysku małymi literami
Źle - C: \ someFolder
Prawidłowo - c: \ someFolder
źródło