2010-09-17 15 views
5

He utilizado Artinsoft's VB6 para el asistente .NET para convertir una aplicación VB6 a C# y recibo una advertencia de actualización en cualquier lugar donde Err.Number haya sido utilizado anteriormente;Err.Number (VB6 contra C#)

// UPGRADE_WARNING: (2081) Err.Number tiene un nuevo comportamiento.

El código convertido se refiere a;

Microsoft.VisualBasic.Information.Err().Number 

No he tenido suerte para descubrir cuál es la diferencia. ¿Alguien sabe lo que podría ser, o es seguro ignorar esta advertencia?

ACTUALIZACIÓN

Para cualquier persona que se topa con esta pregunta en el futuro - una palabra de advertencia; NO es seguro continuar usando Err.Number en una aplicación C# .NET. La propiedad todavía está disponible, sin embargo, no se rellena después de los errores como se esperaba. El único caso en el que se rellena como se espera es si el error proviene de un componente COM.

Errores normales, p. El acceso DB, las operaciones IO, etc. no darán ningún valor a Err(). Number, por lo que su uso debe ser refactorizado desafortunadamente.

Por extraño que parezca, en VB .NET, todavía funciona como se esperaba, por lo que tal vez esto es algo a tener en cuenta al tomar una decisión sobre el idioma de destino para la conversión.

+0

OT: ¿está satisfecho con el trabajo que está haciendo la VBUC? – kjack

+1

@kjack: Definitivamente ahorra mucho trabajo pesado durante el proceso de conversión, pero hay una serie de "peculiaridades" en sus conversiones de patrones que tardan en acostumbrarse. Sin embargo, en general, diría que probablemente valga la pena usarlo, pero no esperes ningún milagro. –

+0

Gracias por eso, es raro ver reseñas de estos productos por alguna razón. – kjack

Respuesta

2

básicamente VB.NET tiene soporte para la propiedad Err.Number, y funciona prácticamente igual que en VB6; sin embargo, al actualizar a C#, Microsoft.VisualBasic.Information.Err(). Number no se rellena correctamente, y no deberías confiar en eso.

El único escenario donde el número de error se establece con seguridad, es cuando el error es generado por un componente de interoperabilidad COM, en cuyo caso puede verificar el número de error en el miembro InnerException de la excepción.

Debe convertir todos los usos de Err.Number para las excepciones de .NET y modificar la lógica para que se comporte correctamente con el manejo de errores estructurados.

saludos

1

Descripción de VB6 Err.Number entre octubre de 2000 MSDN:

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

Descripción de VB.NET Err.Number de MSDN:

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

Las observaciones de los PTU el año 2000 MSDN se copian palabra por palabra en la versión en línea para VB.NET, incluido el ejemplo. No parece ser nada diferente entre los dos.

+0

Bastante justo, supondré por ahora que puedo seguir usando Err.Number como lo hacía anteriormente. Gracias Corin. –

0

¿Han cambiado los números?