2013-10-10 7 views
7

Ho un'applicazione .NET che è stata creata su Framework 2.0.[nome programma] .exe ha smesso di funzionare

  • Ho creato un programma di installazione e sto provando a eseguirlo su un computer con 3.5.
  • Tutti gli ambienti rilevanti sono su Windows 7
  • L'applicazione funziona perfettamente in modalità debug VS sulla mia macchina di sviluppo, che ha anche Framework 3.5.
  • Il programma di installazione funziona bene sia su mia macchina di sviluppo e macchina dell'utente
  • Dopo l'installazione, l'esecuzione del programma si traduce immediatamente in "[nome del programma] .exe ha smesso di funzionare" senza ulteriori informazioni
  • ho avuto l'utente prova ad installare Framework 2.0, ma è stato bloccato dal "devi utilizzare la finestra di dialogo abilita/disabilita funzionalità"
  • Ho esaminato alcune altre cose come DEP, impostando l'assembly in modalità compatibile con Windows 7, e così via
  • Non credo che sia un errore specifico nell'applicazione, perché ha una schermata iniziale che mostra solo un'immagine jpeg prima di fare qualsiasi cos'altro, e anche quello non appare; sembra che debba essere un problema di compatibilità generale.

Non ho idea di cosa fare dopo. Spero che qualcuno possa almeno suggerire un modo per ottenere ulteriori informazioni di errore durante l'esecuzione di .exe in modo da poter individuare il problema.

Grazie in anticipo.

Mike

EDIT 1

Qui è l'errore che ho trovato nel registro eventi:

Log Name:  Application 
Source:  Application Error 
Date:   10/10/2013 1:42:49 PM 
Event ID:  1000 
Task Category: (100) 
Level:   Error 
Keywords:  Classic 
User:   N/A 
Computer:  [my development machine] 
Description: 
Faulting application name: BARTJr.exe, version: 1.0.0.1, time stamp: 0x5256e6de 
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18229, time stamp: 0x51fb1677 
Exception code: 0xe0434f4d 
Fault offset: 0x000000000000940d 
Faulting process id: 0x%9 
Faulting application start time: 0x%10 
Faulting application path: %11 
Faulting module path: %12 
Report Id: %13 
Event Xml: 

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
    <System> 
    <Provider Name="Application Error" /> 
    <EventID Qualifiers="0">1000</EventID> 
    <Level>2</Level> 
    <Task>100</Task> 
    <Keywords>0x80000000000000</Keywords> 
    <TimeCreated SystemTime="2013-10-10T17:42:49.000000000Z" /> 
    <EventRecordID>19455</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>mcaputow7.ezesoft.net</Computer> 
    <Security /> 
    </System> 
    <EventData> 
    <Data>BARTJr.exe</Data> 
    <Data>1.0.0.1</Data> 
    <Data>5256e6de</Data> 
    <Data>KERNELBASE.dll</Data> 
    <Data>6.1.7601.18229</Data> 
    <Data>51fb1677</Data> 
    <Data>e0434f4d</Data> 
    <Data>000000000000940d</Data> 
    </EventData> 
</Event> 

EDIT 2

L'errore fa riferimento a un file temporaneo con informazioni aggiuntive. Ecco il contenuto di tale file:

<?xml version="1.0" encoding="UTF-16"?> 
<WERReportMetadata> 
    <OSVersionInformation> 
     <WindowsNTVersion>6.1</WindowsNTVersion> 
     <Build>7601 Service Pack 1</Build> 
     <Product>(0x1): Windows 7 Ultimate</Product> 
     <Edition>Ultimate</Edition> 
     <BuildString>7601.18113.amd64fre.win7sp1_gdr.130318-1533</BuildString> 
     <Revision>1130</Revision> 
     <Flavor>Multiprocessor Free</Flavor> 
     <Architecture>X64</Architecture> 
     <LCID>1033</LCID> 
    </OSVersionInformation> 
    <ProblemSignatures> 
     <EventType>CLR20r3</EventType> 
     <Parameter0>ssms.exe</Parameter0> 
     <Parameter1>2011.110.2100.60</Parameter1> 
     <Parameter2>4f35e2d9</Parameter2> 
     <Parameter3>System.Management</Parameter3> 
     <Parameter4>4.0.0.0</Parameter4> 
     <Parameter5>4ba1e140</Parameter5> 
     <Parameter6>d0</Parameter6> 
     <Parameter7>1c</Parameter7> 
     <Parameter8>RXOEJIH3RSKJEZ4XXWPXUDKCPPWJODNG</Parameter8> 
    </ProblemSignatures> 
    <DynamicSignatures> 
     <Parameter1>6.1.7601.2.1.0.256.1</Parameter1> 
     <Parameter2>1033</Parameter2> 
     <Parameter22>0a9e</Parameter22> 
     <Parameter23>0a9e372d3b4ad19135b953a78882e789</Parameter23> 
     <Parameter24>0a9e</Parameter24> 
     <Parameter25>0a9e372d3b4ad19135b953a78882e789</Parameter25> 
    </DynamicSignatures> 
    <SystemInformation> 
     <MID>BAB83330-1394-44F8-8298-044776CE31CB</MID> 
     <SystemManufacturer>Microsoft Corporation</SystemManufacturer> 
     <SystemProductName>Virtual Machine</SystemProductName> 
     <BIOSVersion>090004</BIOSVersion> 
    </SystemInformation> 
</WERReportMetadata> 
+0

C'è qualcosa nel registro eventi? – Andrew

+0

@Andrew, si. Essa mostra il seguente: nome del modulo Faulting: KERNELBASE.dll, Versione: 6.1.7601.18229, timestamp: 0x51fb1677 Codice eccezione: 0xe0434f4d Ho cercato su google il codice di eccezione e ha trovato qualcuno parlare di un problema con il controllo delle versioni. Avevo cambiato la versione da 1 a 2, quindi ho appena provato a cambiarlo, ma lo stesso problema. – eequalsmcaputo

+2

btw, perché è stato downvoted? Ho passato ore a cercare e risolvere questo problema prima di postare. – eequalsmcaputo

risposta

0

ho esperienza questo molte volte in passato, e ogni volta è perché il computer di destinazione non dispone di un assembly (DLL) a cui fa riferimento la mia domanda. Quando l'applicazione fa riferimento a un assembly che è necessario immediatamente, ad es. prima che venga visualizzato il modulo di avvio (per un progetto di moduli di Windows), si bloccherà in quel modo.

In ogni caso, non sto promettendo che questa è la tua risposta, ma è qualcosa da guardare.

+0

Potrebbe essere la versione del framework? Tutti i .dll di riferimento sono presenti nella cartella bin dopo la distribuzione, ad eccezione dei file framework. – eequalsmcaputo

+0

Possibilmente. Sai per certo che .NET 2.0 esiste sul computer di destinazione? –

+0

Sì, ho appena controllato, e le versioni giuste sono lì su entrambe le macchine, quindi non importa a quell'idea. – eequalsmcaputo

3

Questo è risolto. Alla fine ho pensato di provare "Esegui come amministratore", che mi ha permesso di vedere l'errore effettivo che si stava verificando. Non ha senso che i privilegi di amministratore siano necessari per ottenere una finestra di dialogo delle eccezioni non gestite. NET, ma è così.

0

Mettere sotto codice nel tuo enterpoint (Main) prima in grado di catturare eccezione prima di schianto

AppDomain.CurrentDomain.UnhandledException += (sender,e)=>{ 
    if(e.IsTerminating) 
    { 
     //TODO: write your log 
    } 
}; 
0

mi si avvicinò con questo problema solo ora, e ho scoperto che era la perdita di alcune dll che ha portato al problema Ho dovuto interrompere l'aggiornamento dell'applicazione e suppongo che possa essere la causa della perdita.