2010-05-19 15 views
5

Mam aplikację .NET C# winforms, która działa doskonale na moim komputerze, ale jeśli spróbuję uruchomić ją na innej maszynie, nie uruchamia się. Brak komunikatu o błędzie, brak komunikatu o awarii, brak okna - nic.Aplikacja .NET po cichu nie uruchamia się, gdy brakuje zestawu.

Odkryłem, że dzieje się tak zawsze, gdy brakuje zespołu referencyjnego. Domyślam się, że to jest ogólne zachowanie .NET, a nie specyficzne dla mojej aplikacji, prawda?

Czy istnieje sposób skonfigurowania .NET lub mojej aplikacji, która wypluwa "brak odniesienia do odwołania", np. Komunikat o błędzie w takich przypadkach?

+1

Czy próbowałeś przejrzeć dziennik aplikacji w przeglądarce zdarzeń? Zwykle pojawia się komunikat o błędzie wyjaśniający, dlaczego program się zawiesił. – TLiebe

+0

Cześć TLiebe. Dzięki za twoją odpowiedź. Zapisz go jako anwer i zaakceptuję go :-) Rzeczywiście znalazłem komunikat o błędzie, nawet gdy "raportowanie o błędach" zostało wyłączone (co jest wymagane przez środowisko firmy). – chiccodoro

Odpowiedz

6

To nie jest normalne. Aplikacja zginie z nieobsługiwanego wyjątku, który uruchamia raport błędów systemu Windows. Musiałbym się domyślić, że maszyna docelowa została wyłączona lub wymieniona na WER.

+0

To było to! Szkoda, że ​​raport o błędzie informuje mnie tylko o awarii aplikacji, ale nie o tym, czego brakuje w zespole. I szkoda, że ​​exe nie pisze nic do standardowego wyjścia błędu "jak dobrzy ludzie robią" ... Ale przynajmniej teraz wiem, dlaczego pozostało zupełnie cicho. – chiccodoro

+0

Nie ma takiej magii. Musisz dodać to samodzielnie, zaimplementuj procedurę obsługi zdarzeń dla zdarzenia AppDomain.CurrentDomain.UnhandledException. –

0

Oprócz pliku wykonywalnego, czy kopiujesz również pliki DLL z folderu debugowania/wydania na komputer docelowy?

Można spróbować, kopiując cały folder debugowania/wydania na innym komputerze.

Sprawdź również aplikację (jeśli istnieje)/dziennik zdarzeń dla dodatkowej wskazówki.

+0

Cześć Ram. To był dokładnie mój powód, dla którego aplikacja się nie powiodła: zapomniałem skopiować niektóre złożeń. Ale moje pytanie brzmi: dlaczego aplikacja nie skarżyła się na brakujące złożenia. – chiccodoro

+0

@chiccodoro: - Nie sądzę, czy jest to możliwe w przypadku zespołów .NET. dla COM możesz sprawdzić, czy biblioteka DLL jest już w podanej lokalizacji. dla aplikacji .NET po prostu wyrzuci wyjątek (chyba nie znaleziono metody), jeśli brakuje zestawu. Sugestia ze mnie, aby właściwość CopyLocal = true dla każdego odniesienia, więc wszystkie takie złoenia będą częścią twojego folderu debugowania/wydania. – Ram

Powiązane problemy