2010-09-17 17 views
5

Ho utilizzato la procedura guidata VB6 to .NET di Artinsoft per convertire un'applicazione VB6 in C# e ricevo un avviso di aggiornamento in qualsiasi posizione in cui in precedenza era stato utilizzato Err.Number;Err.Number (VB6 versus C#)

// UPGRADE_WARNING: (2081) Err.Number ha un nuovo comportamento.

Il codice convertito fa riferimento a;

Microsoft.VisualBasic.Information.Err().Number 

Non ho avuto alcuna fortuna a scoprire qual è la differenza. Qualcuno sa cosa potrebbe essere, o è sicuro ignorare questo avviso?

UPDATE

Per chi si imbatte in questa domanda in futuro - una parola di avvertimento; NON è sicuro continuare a utilizzare Err.Number in un'applicazione C# .NET. La proprietà è ancora disponibile, tuttavia non è popolata dopo errori come previsto. L'unico caso in cui è popolato come previsto è se l'errore proviene da un componente COM.

Errori normali, ad es. L'accesso al DB, le operazioni di I/O ecc. Non daranno alcun valore a Err(). Numero, e quindi il suo uso deve essere rifattorizzato sfortunatamente.

Stranamente, in VB .NET, funziona ancora come previsto, quindi forse questo è qualcosa da tenere a mente quando si prende una decisione sulla lingua di destinazione per la conversione.

+0

OT: sei soddisfatto del lavoro svolto da VBUC? – kjack

+1

@kjack: Sta sicuramente risparmiando un sacco di lavoro durante il processo di conversione, ma ci sono un certo numero di "stranezze" nelle sue conversioni di pattern a cui ci si deve abituare. Nel complesso però, direi che probabilmente vale la pena utilizzarlo, ma non aspettatevi miracoli da esso. –

+0

Grazie per questo, è raro vedere recensioni di questi prodotti per qualche motivo. – kjack

risposta

2

fondamentalmente VB.NET supporta la proprietà Err.Number e funziona più o meno come in VB6, tuttavia quando si aggiorna a C# il Microsoft.VisualBasic.Information.Err(). Il numero non è popolato correttamente, e non dovresti fare affidamento su di esso.

L'unico scenario in cui il numero di errore è impostato con certezza, è quando l'errore viene generato da un componente di interoperabilità COM, nel qual caso è possibile controllare il numero di errore nel membro InnerException dell'eccezione.

È necessario convertire tutti gli usi Err.Number per le eccezioni .NET e modificare la logica per comportarsi correttamente con la gestione degli errori strutturati.

saluti

1

descrizione VB6 Err.Number da ottobre 2000 MSDN:

Returns or sets a numeric value specifying an error. Number is the Err object's default property. Read/write.

descrizione VB.NET Err.Number da MSDN:

Returns or sets a numeric value specifying an error. Read/write.

Le osservazioni dal Ottobre 2000 MSDN viene copiato parola per parola nella versione online di VB.NET incluso l'esempio. Non sembra essere niente di diverso tra i due.

+0

Abbastanza corretto, suppongo per ora che posso continuare a utilizzare Err.Number come prima. Grazie Corin. –

0

Forse i numeri utilizzati sono cambiati?